一个数据开发用AI跑完机器学习项目的真实记录

4 阅读8分钟

如果你也是非算法背景,甚至只有一点Python基础,想用AI真正动手做点“听起来很高级”的东西,这篇应该能给你省不少时间。


01 项目背景与动机

一是好奇AI写代码到底到什么程度了。 业内都在用AI写代码,我想试试:完全靠AI,能不能把一个完整的机器学习项目跑通。

二是想补一下机器学习的基础流程。 现在数据开发岗位也在跟AI、模型沾边,招聘里越来越多要求“了解特征工程、模型训练”。二手车这个项目不大不小,刚好适合练手。

三是验证一个想法。 很多人说“AI会取代程序员”,我想自己试——AI能帮我到什么程度,哪些地方它帮不了。

我的目标很简单:跑通流程,分数控制在500以内(赛题分数越低越好)。


02 工具组合与分工

这次用了两个工具配合:

  • CodeBuddy(PyCharm插件) :负责生成代码,数据探索、特征工程、模型训练这些框架代码都是它给的。
  • DeepSeek:负责解释概念、给建议、帮我理解结果。不懂的术语、参数、现象,直接问。

一句话:一个负责“写”,一个负责“想”。


03 AI具体帮我做了什么

场景一:理解题目和数据

一开始我连“MAE”是什么都不知道。直接把赛题描述扔给DeepSeek,它告诉我:

“MAE是平均绝对误差,数值越小越好。这个赛题就是预测二手车价格。”

然后让CodeBuddy生成数据探索代码,跑出来发现:

  • 训练集15万条,测试集5万条
  • 30多个特征,v_0到v_14是匿名的
  • power(功率)偏度特别高

这些基础认知,如果自己啃,可能要半天。AI帮我压缩到了半小时。

场景二:提示我做特征工程

我完全不懂“特征工程”是什么。DeepSeek解释:

“就是把原始数据变成模型更容易学习的格式。比如车龄、里程可能需要变换,或者把几个特征乘起来产生新的。”

然后我问它“二手车一般用哪些特征”,它列了车龄、里程、品牌,还特意提了一句:

“v_0到v_14虽然是匿名的,但通常很重要,可以尝试做交互特征。”

这个提示后来帮了大忙。我让CodeBuddy生成特征重要性分析,发现v_0和v_3排在前列(见下图),于是加了一个交互特征:

train_df['v0_v3_interaction'] = train_df['v_0'] * train_df['v_3']
特征重要性排名
v_02
v_35
power8
......

这个特征确实有效。如果自己瞎琢磨,根本想不到要去乘两个匿名特征。

场景三:理解模型和参数

第一次跑XGBoost,MAE是600多。我问DeepSeek怎么优化,它说:

“XGBoost有很多参数可以调,比如learning_rate、max_depth、n_estimators。一般先调learning_rate,再调其他。”

虽然我不完全理解这些参数,但至少知道了:调参数有顺序,不是乱试。

后来让CodeBuddy生成参数组合测试代码,发现learning_rate=0.02、max_depth=8、n_estimators=5000最稳。AI给的初始参数是0.1,调低后过拟合明显改善。

场景四:解释结果

最让我困惑的是:本地交叉验证MAE是480,提交后却变成550。

我把情况问DeepSeek,它给了几个可能原因:

  • 过拟合
  • 训练集和测试集分布不一致
  • 特征泄露

它没直接告诉我答案,但给了排查方向。后来我自己一个个特征删掉去试,发现是creatDate这个特征在训练集和测试集分布不同,删掉后好了一些。


04 一个完整案例:我是怎么做出v0_v3交互特征的

这个例子最能说明“AI怎么帮我,我又做了什么”。

第一步:AI帮我跑特征重要性 让CodeBuddy生成代码,跑出来v_0排第2,v_3排第5。

第二步:我问AI这俩特征是什么 DeepSeek说:“v_0到v_14是匿名特征,可能代表车辆的技术参数或市场评分。你可以试试把它们做交互,比如相乘。”

第三步:我动手加特征 在特征工程代码里加了两行:


train_df['v0_v3_interaction'] = train_df['v_0'] * train_df['v_3']
test_df['v0_v3_interaction'] = test_df['v_0'] * test_df['v_3']

第四步:验证效果 重新跑模型,XGBoost单模型的MAE从500左右降到490左右。

第五步:延续这个思路 后来又加了一系列特征:

  • v_0和power的对数变换
  • car_age(车龄)
  • v_0与power、car_age的交互

这些特征里,大部分是AI提示方向后,我自己动手加的。 代码里最终用了30多个特征,是一轮轮验证、取舍的结果。


05 双模型集成:从490到475的关键一步

单模型做到490分后,再怎么调参都难降了。我问DeepSeek下一步,它说:

“可以试试模型集成,比如XGBoost + LightGBM。两个模型结构不同,融合后往往能提升稳定性。”

我让CodeBuddy生成双模型+5折交叉验证的代码框架,然后自己试了5组权重:

XGBoost权重LightGBM权重5折CV MAE(均值)
50%50%483
60%40%479
70%30%475
80%20%477
90%10%481

发现70% XGB + 30% LightGBM最稳,5折分数波动最小。

集成代码:


ensemble_val_pred = 0.70 * xgb_val_pred + 0.30 * lgb_val_pred

从单模型的490,到双模型的475,这15分的提升,是“AI给方向 + 我自己试权重”配合出来的。


06 AI能帮我什么,帮不了什么

这次跑下来,我对AI的边界有了更清晰的认识:

AI能帮我AI帮不了我
快速生成代码框架(数据加载、特征工程、模型训练)业务理解(为什么v_0重要?只能靠猜)
解释概念(MAE、特征工程、过拟合)特征合理性判断(加了特征分数变差,AI说不清为什么)
提供调参方向和顺序过拟合的具体定位(哪个特征导致的?得自己试)
给出模型集成思路判断“什么时候该停”

总结一句话:AI让“不会写代码的人也能跑通流程”,但“做得好不好”还是取决于你对业务和数据的理解。


07 整体感受

好的方面:

  • 快速入门:从完全不懂,到跑通全流程,AI压缩了入门时间
  • 框架完整:数据加载、特征工程、模型训练、交叉验证,代码生成得很完整
  • 随时提问:不懂的概念随时问,不用到处搜

不如预期的方面:

  • 关键决策还得靠自己:选哪些特征、怎么判断过拟合,AI给不了确定答案
  • 生成的代码需要调整:路径、文件读取这些细节经常要自己改
  • 调试时容易卡住:代码跑不通时,不懂的人只能删了重来

最大的收获: AI是一个很好的“脚手架”——帮你快速搭起框架,让你不用从零开始。但真正“盖房子”的能力(判断什么特征合理、什么参数有效、什么结果可信),还是得自己积累。


08 如果你也想试试,可以这样做

  1. 选个小项目:别一上来就搞复杂的,天池、Kaggle的入门赛正合适
  2. 工具搭配:一个负责生成代码(CodeBuddy、GitHub Copilot),一个负责解释提问(DeepSeek、ChatGPT)
  3. 别迷信AI的第一次输出:路径、文件读取这些细节经常要自己改
  4. 多问“为什么” :不要只让它生成代码,多问“这个参数什么意思”“这个操作为什么有效”
  5. 自己验证效果:AI推荐的特征可以试试,但效果好不好,一定要自己跑一遍
  6. 设定好“停”的标准:想清楚做到什么程度就够,别被AI的建议带着无限优化下去

最后,我一个数据开发,用AI做机器学习项目,学到的是:

AI能帮你跨过“不会写代码”的门槛,但跨过之后,真正的门槛是“怎么判断”和“怎么选择”。

这些判断和经验,没法靠AI速成,只能靠自己一次次试错、一次次复盘。

工具在变,但“动手实践”这件事,从来没变过。


用时2天 / 成绩475分(排名409) 工具:CodeBuddy(PyCharm插件)+ DeepSeek / Python (XGBoost, LightGBM)

赛题链接天池二手车价格预测学习赛 DeepSeek官网chat.deepseek.com


你在用AI做开发/学习时遇到过什么问题?欢迎留言。