目录
导言:当数据成为算法的"预制菜"
深夜的硅谷数据工厂,一条全自动预处理流水线正在轰鸣运转——缺失值填充、分类变量编码、特征缩放等工序如精密齿轮般咬合。本文将手把手教你用Scikit-Learn打造工业级数据转换流水线,让原始数据蜕变为算法可直接"食用"的标准餐品。
一、缺失值处理:数据修复的三大法则
1.1 智能填充策略选择
from sklearn.impute import SimpleImputer, KNNImputer
# 中位数填充(适用于存在离群值)
median_imputer = SimpleImputer(strategy='median')
# KNN填充(高相关特征场景)
knn_imputer = KNNImputer(n_neighbors=5)
# 迭代填充(复杂关系场景)
from sklearn.experimental import enable_iterative_imputer
from sklearn.impute import IterativeImputer
iter_imputer = IterativeImputer(random_state=42)
# 执行中位数填充示例
housing_num = housing.select_dtypes(include=[np.number])
housing_imputed = median_imputer.fit_transform(housing_num)
1.2 填充策略对比矩阵
策略 | 适用场景 | 优点 | 缺点 |
---|---|---|---|
中位数填充 | 存在离群值 | 抗干扰性强 | 忽略特征间关系 |
均值填充 | 正态分布数据 | 保持均值不变 | 对异常值敏感 |
KNN填充 | 特征相关性高 | 利用特征间模式 | 计算成本高 |
迭代填充 | 复杂关系数据 | 建模特征间关系 | 可能引入数据泄漏风险 |
二、类别变量编码:从文本到算法的语言翻译
2.1 编码方式深度对比
from sklearn.preprocessing import OrdinalEncoder, OneHotEncoder
# 序号编码(有序类别)
or