示例成品 · 平台演示,按左边这组点选真跑出来的
下面按 sklearn 常见写法给出一版可直接粘贴的注释。如果你当前代码是 pandas 手动 `fillna`,注释含义一样,对应迁移即可。
```python
from sklearn.impute import SimpleImputer
from sklearn.preprocessing import StandardScaler
from sklearn.pipeline import Pipeline
# ========== 1. 缺失值填充 ==========
# 这一步解决:模型不能直接处理 NaN,先填坑,避免训练报错或预测偏差。
# 为什么选中位数:数值特征常有偏态或离群点,中位数不像均值那样容易被极端值拉偏,更稳。
# 参数依据:strategy='median' 对每列分别计算中位数,只使用训练集统计量;若数据接近正态且无离群点,可换 'mean'。
imputer = SimpleImputer(strategy='median')
# ========== 2. 标准化 ==========
# 这一步解决:不同特征量纲差异大,比如身高、收入混在一起,模型容易被大数值带偏。
# 为什么选 StandardScaler:相当于把每个数值特征都换成“离平均值差几个标准差”的尺子,
# 统一量纲后,线性模型、SVM、神经网络等尺度敏感模型更稳。
# 参数依据:with_mean=True、with_std=True 是默认值,表示做 z-score 标准化;稀疏矩阵需改为 with_mean=False。
scaler = StandardScaler()
# ========== 3. 组合成 pipeline ==========
# 这一步解决:手动写 fit/transform 容易训练集和验证集顺序不一致,甚至把验证集统计量混进来。
# 为什么用 Pipeline:固定“先填充、再标准化”的顺序,并保证训练集上 fit 得到的统计量复用到验证集/测试集。
# 参数依据:steps 按列表顺序执行,名称 imputer、scaler 方便后续调参。
numeric_pipeline = Pipeline(steps=[
('imputer', imputer),
('scaler', scaler)
])
# 使用方式:
# X_train = numeric_pipeline.fit_transform(X_train)
# X_valid = numeric_pipeline.transform(X_valid)
```
点左边「开工 · 直接出成品」,出一份你自己的版本(文字免费)