数据准备

端到端机器学习

Joshua Stapleton

Machine Learning Engineer

数据准备步骤

数据集包含:

  • 缺失值
  • 离群点
  • 类别不平衡
  • 空列
  • 重复项

数据准备:

  • 基于 EDA 洞察
  • 对后续模型表现至关重要
端到端机器学习

空/缺失值

  • 删除缺失或稀疏的行/列
  • 空值会导致模型出错
  • 列用 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')
端到端机器学习

处理空/缺失值

  • 清洗/删除取值取决于 EDA 结果

 

  • 若某列缺失过多:
    • 删除该列

 

  • 若目标列缺失:
    • 删除含缺失目标的行
    • 或视为单独类别
端到端机器学习

插补

少量缺失时如何处理?

  • 插补:

    • 用替代值填补缺失
  • 策略

    • 用均值或中位数
    • 用常量或上一个值
# 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()
端到端机器学习

Passons à la pratique !

端到端机器学习

Preparing Video For Download...