处理缺失数据

用 Python 练习机器学习面试题

Lisa Stuart

Data Scientist

先修要求

用 Python 练习机器学习面试题

课程大纲

  • 第 1 章:预处理与可视化
    • 缺失数据、离群值、归一化
  • 第 2 章:监督学习
    • 特征选择、正则化、特征工程
  • 第 3 章:无监督学习
    • 聚类算法选择、特征提取、降维
  • 第 4 章:模型选择与评估
    • 泛化与评估、模型选择
用 Python 练习机器学习面试题

机器学习(ML)流程

流程概览

用 Python 练习机器学习面试题

我们的 ML 流程

流程

用 Python 练习机器学习面试题

缺失数据

  • 不同技术的影响
  • 发现缺失值
  • 处理策略
用 Python 练习机器学习面试题

技术

  1. 省略
    • 删除行 --> .dropna(axis=0)
    • 删除列 --> .dropna(axis=1)
  2. 填补
    • 用 0 填充 --> SimpleImputer(strategy='constant', fill_value=0)
    • 均值填补 -> SimpleImputer(strategy='mean')
    • 中位数填补 --> SimpleImputer(strategy='median')
    • 众数填补 --> SimpleImputer(strategy='most_frequent')
    • 迭代填补 --> IterativeImputer()
用 Python 练习机器学习面试题

为何重视?

  • 降低引入偏差的概率
  • 多数 ML 算法需要完整数据
用 Python 练习机器学习面试题

填补的影响

  • 取决于:
    • 缺失值情况
    • 原始方差
    • 是否有离群值
    • 偏度的大小与方向
  • 省略 --> 可能删得过多
  • 用 0 --> 使结果向下偏
  • 均值 --> 更受离群值影响
  • 中位数 --> 有离群值时更好
  • 众数与迭代填补 --> 试验比较
用 Python 练习机器学习面试题
函数 返回
df.isna().sum() 缺失数量
df['feature'].mean() 特征均值
.shape 行、列维度
df.columns 列名
.fillna(0) 用 0 填充缺失
select_dtypes(include = [np.number] ) 数值列
select_dtypes(include = ['object'] ) 字符串列
.fit_transform(numeric_cols) 拟合并转换
用 Python 练习机器学习面试题

缺失值的影响

在机器学习(ML)中,缺失值有什么影响? 选择正确的陈述:

  • 缺失值不是问题,因为大多数 sklearn 算法可处理它们。
  • 一般应删除含缺失的观测或特征。
  • 缺失数据往往引入偏差并导致误导性结果,不能忽视。
  • 用 0 填充会使结果向上偏。
用 Python 练习机器学习面试题

缺失值的影响:答案

在机器学习(ML)中,缺失值有什么影响? 正确答案是:

  • 缺失数据往往引入偏差并导致误导性结果,不能忽视。(通过测试选择对数据集方差影响最小的填补方式是更佳做法。)
用 Python 练习机器学习面试题

缺失值的影响:错误选项

在机器学习(ML)中,缺失值有什么影响?

  • 缺失值不是问题……(多数 sklearn 算法无法处理缺失值,会报错。)
  • 删除含缺失的观测或特征……(除非数据集很大且缺失比例很小,否则这样做常使数据集缩减过度,不利于后续 ML。)
  • 用 0 填充会使结果向上偏。(相反,会使结果向下偏。)
用 Python 练习机器学习面试题

Vamos praticar!

用 Python 练习机器学习面试题

Preparing Video For Download...