机器学习 5 — 综合练习
:::tip Kaggle 笔记本 本章的完整可执行代码在 Kaggle 上:打开 →
法语和英语版本可在首页查看。 :::
四个综合练习,将之前所学的内容付诸实践。每个数据集都强调前面章节中的特定技能。笔记本提供参考解答:扎实的基线,不是 Kaggle 最优解,但是可以打磨的干净骨架。
Mercedes-Benz Greener Manufacturing
类型: 高维回归。
数据集包含约 370 个混合特征(用字母编码的类别 + 二进制)来预测 y,一个来自测试台的性能分数。
期望
- 加载数据集,检查目标和列类型。
- 构建
ColumnTransformer:类别用OneHotEncoder,二进制几乎恒定的用VarianceThreshold删除。 - 在
Pipeline中训练 Ridge 或 GradientBoostingRegressor。 - 在测试集上用 MAE / RMSE / R² 评估。
为什么是这个练习?
它是预处理比模型耗时更长的高维数据集的典型代表。变量选择(通过 VarianceThreshold 或 Lasso)起到关键作用。
Stroke Prediction
类型: 不平衡分类 + 缺失值。
根据人口统计、医疗和生活方式因素预测中风发生。约 5,000 个观测,仅约 5% 是阳性。
期望
- 加载,删除
id。检查不平衡。 - 处理
bmi(真正的 NaN)和smoking_status='Unknown'(伪装的 NaN)。 - 用
SimpleImputer+OneHotEncoder+StandardScaler构建 Pipeline。 - 用
class_weight='balanced'的模型,或带 SMOTE 的imblearn流水线。 - 用混淆矩阵、精确率/召回率/F1和 PR 曲线评估。
为什么是这个练习?
强不平衡的典型例子,准确率不再有意义。FN(漏检中风)的代价比 FP(误警)高得多。阈值和验证指标的选择变得至关重要。
House Prices — Ames
类型: 数值/类别混合的复杂回归。
根据 Ames 市(爱荷华州)房屋的约 80 个特征预测 SalePrice。许多结构性的缺失值(NaN 表示"无车库"、"无地下室"等)。
期望
- 加载,删除
Id。 - Pipeline:数值的
SimpleImputer中位数 + 类别的'missing',One-Hot,缩放。 - 模型:
GradientBoostingRegressor或 XGBoost。 - 用 log(SalePrice) 上的 RMSE 评估——这是 Kaggle 竞赛指标,对相对误差的惩罚更好。
走得更远
一些显著提升分数的特征工程想法:
TotalSF = TotalBsmtSF + 1stFlrSF + 2ndFlrSF:总面积是最具预测性的变量。Age = YrSold - YearBuilt、RemodAge = YrSold - YearRemodAdd。HasGarage = GarageArea > 0、HasPool = PoolArea > 0。
MNIST
类型: 图像分类,进入视觉的入口。
10,000 张 28×28 的手写数字图像,分为 10 类。
期望
- 加载子样本(10,000 行对 k-NN 或 RF 已经够用)。
- 用
imshow可视化一些数字。 - 将像素归一化到
[0, 1]。 - 训练
RandomForestClassifier或KNeighborsClassifier。 - 评估:准确率 + 10×10 混淆矩阵(非常有信息量)。
为什么是这个练习?
证明"表格"机器学习模型在简单图像上效果出奇地好(用 RF 在扁平像素上约 95% 准确率)。但也是为了在下一门课程中过渡到深度学习和 CNN 的动机:经过良好调整的 CNN 在 MNIST 上轻松超过 99%。
混淆矩阵揭示了经典混淆:4↔9、3↔5、7↔1。视觉上相似的数字。