从刷了三个月教程到打Kaggle
花了两周时间打完Kaggle上那个Health and Lifestyle的Playground比赛,最大的感受是——之前看的所有机器学习的视频和文章,加起来不如自己完整走一遍流程学得多。不是说教程没用,而是真正面对一个未知的表格时,那些“探索性数据分析”、“特征工程”、“Pipeline”这些概念才从抽象变成具体。
下一篇
RAGAS vs DeepEval:同一个编造的回答 →
先说数据集:一万多行,十几个特征,数值和类别混在一起。刚开始觉得挺简单,结果一做EDA就发现坑挺多——比如Sleep Duration居然有单位不一致的,Calorie Expenditure和Step Count之间有明显的非线性关系。我花了一个晚上画分布图和箱线图,才发现这些细节直接影响了后面的特征构造。
预处理阶段,我照搬了之前看过的Scikit-learn Pipeline教程,把数值列做StandardScaler、类别列做OneHotEncoder,然后拼在一起。但问题来了:Pipeline里处理缺失值时,SimpleImputer用均值还是中位数?试了一下,对结果影响不小。最后用GridSearchCV调了参数,顺便对比了XGBoost、LightGBM、RandomForest和逻辑回归的集成投票效果。实话说,单模型LightGBM就够强了,但集成之后分数又涨了一点点。
最踩坑的反而是提交格式。Kaggle要求ID列和预测列,我一开始把index当ID交了,分数栏直接报错。排查了十分钟才发现是忘记reset_index。这种小错误在教程里根本不会出现,到了实战就会教你做人。
最后Public LB分数排进了前20%,虽然只是Playground比赛,但第一次能把整个流程走通——从原始CSV到Pipeline再到集成提交,感觉学ML总算有点底了。接下来准备挑战真正的Kaggle Classic比赛。