資料前處理

端到端機器學習

Joshua Stapleton

Machine Learning Engineer

資料前處理步驟

資料集包含:

  • 遺漏值
  • 離群值
  • 類別不平衡
  • 空欄
  • 重複資料

資料前處理:

  • 依 EDA 洞見進行
  • 對後續模型效能關鍵
端到端機器學習

Null/空值

  • 移除遺漏或稀疏的列/欄
  • Null 可能讓模型失效
  • df.drop() 刪欄
  • df.dropna(how='all') 刪列
# count missing values
print(df['oldpeak'].isnull().sum())

# Drop empty column(s) and row(s)
columns_dropped = heart_disease_df.drop(['oldpeak'], axis='columns')
rows_and_columns_dropped = columns_dropped.dropna(how='all')
端到端機器學習

處理 Null/空值

  • 清理/刪除資料取決於 EDA 發現

 

  • 若某欄遺漏值過多:
    • 刪該欄

 

  • 若目標欄有遺漏值:
    • 刪除目標遺漏的列
    • 或視為獨立類別
端到端機器學習

填補遺漏值

只有少量遺漏值時怎麼辦?

  • 填補(Imputation):

    • 以替代值填入遺漏
  • 策略

    • 以平均或中位數填補
    • 用常數或前一筆值
# Calculate the mean cholestrol value 
mean_value = heart_disease_df['chol'].mean()

# Fill missing cholestrol values with the mean
heart_disease_df['chol'].fillna(mean_value, inplace=True)
端到端機器學習

進階填補

進階技巧:

  • K 最近鄰
  • SMOTE(合成少數類過採樣技術)
from sklearn.impute import KNNImputer

# Initialize KNNImputer
imputer = KNNImputer(n_neighbors=2, weights="uniform")

# Perform the imputation on your DataFrame
df_imputed['oldpeak'] = imputer.fit_transform(df['oldpeak'])
端到端機器學習

移除重複

 

  • 資料需乾淨、精簡且有資訊量
  • 冗餘無助益
  • 重複會造成偏差或混淆模型
  • 以唯一識別碼作為刪除紀錄/列的依據

 

# Drop duplicate rows
heart_disease_duplicates_dropped = heart_disease_column_dropped.drop_duplicates()
端到端機器學習

一起來練習吧!

端到端機器學習

Preparing Video For Download...