在数据分析和机器学习项目中,数据常常存在缺失值(missing values)。缺失值会影响模型的性能和分析结果的准确性。因此,合理地对缺失值进行填补(imputation)是数据预处理的重要步骤。
常见填补方法
1. 删除法
直接删除含有缺失值的样本或特征。适用于缺失比例较小且随机缺失的情况。
2. 均值/中位数/众数填补
使用该特征的均值(数值型)、中位数(偏态分布)或众数(类别型)来填补缺失值。简单高效,但可能低估数据方差。
3. K近邻填补(KNN Imputation)
基于相似样本的值进行填补。通过计算与其他样本的距离,选取K个最近邻的值进行加权平均。
4. 回归填补
利用其他特征作为自变量,建立回归模型预测缺失值。适用于特征间存在较强相关性的情况。
5. 多重填补(Multiple Imputation)
生成多个完整数据集,每个数据集中的缺失值通过随机抽样方式填补,最后综合多个结果。能较好保留数据不确定性。
6. 使用专门模型(如 MICE)
MICE(Multivariate Imputation by Chained Equations)是一种迭代式多重填补方法,适用于复杂缺失模式。
选择建议
- 若缺失比例低(<5%),可考虑删除或简单填补。
- 若缺失机制为“完全随机缺失(MCAR)”,均值/中位数填补通常足够。
- 若特征间相关性强,推荐使用 KNN 或回归填补。
- 对统计推断要求高时,应采用多重填补方法。
代码示例(Python)
// 使用 scikit-learn 进行均值填补
from sklearn.impute import SimpleImputer
import numpy as np
data = [[1, 2], [np.nan, 3], [7, 6]]
imputer = SimpleImputer(missing_values=np.nan, strategy='mean')
imputed_data = imputer.fit_transform(data)