第4章项目:跳远成绩预测器

核心问题:同一个模型、同一份干净测试集,只在训练数据中加入一条异常记录,结果会发生什么?

1. 项目简介

你将用一份虚拟体测表建立一个很小的线性回归基线,用身高、体重估计立定跳远距离。接着只向训练集加入一条 175 cm、60 kg、1800 cm 的错误记录,重新训练同一个模型,观察样例预测、测试集 MAE 和图形怎样变化。最后,你要设计数据校验,让错误尽量在进入模型前被发现。

这不是体育评价系统。数据是人工合成的,模型没有看见动作技术、训练经验和身体状态,输出只能帮助理解机器学习机制。

2. 完成后能看到什么

可先打开 index.html 查看无需安装的原理预览;真正的实验和修改都在 Notebook 中完成。

3. 任务合同

项目 约定
输入 课程提供的36条虚拟记录;一条人为注入的训练异常记录
模型 确定性的普通最小二乘线性回归;可选Keras Dense(1) 对照
输出 预测、MAE、模型参数、图、校验结果和个人结论
成功标准 固定划分、同一干净测试集、同一样例,只改变训练异常值;结果可复现
明确不做 不使用真实学生数据;不把预测当成绩;不自动删除所有异常值

系统链路:

合成CSV → 字段/范围检查 → 固定训练/测试划分 → 线性模型
       → 样例预测 + 干净测试集MAE → 异常训练对照 → 人工解释与复核

4. 软件与文件

建议在本章目录中运行:

python -m pip install -r requirements.txt
python -m jupyter lab

5. 90分钟课堂路线

时间 学生活动 可见里程碑
0~10分钟 阅读数据卡、确认特征和标签、写趋势预测 写下“数据→模型→预测”
10~25分钟 运行干净基线 得到样例预测和MAE
25~40分钟 注入1800 cm异常值并重新训练 得到污染结果和对照图
40~55分钟 运行数据校验 看见异常记录在训练前被标记
55~70分钟 B档二选一修改 保存修改前预测与修改后数字
70~82分钟 与Qwen/DeepSeek或Qwen Code协同解释 完成五段留痕和人工纠错
82~90分钟 验收与提交 形成结论和证据包

6. 学生必须作出的修改

二选一,只改变一个主变量:

  1. 修改 OUTLIER_JUMP_CM。先判断异常程度减小后,污染模型的测试MAE和样例预测会更接近还是更远离干净基线,再运行验证。
  2. 修改 VALID_RANGES["jump_distance"] 的上限。先说明新范围为何适合你假设的人群,再验证1800 cm是否被拦截。注意:范围过窄可能把真实但少见的数据也标成异常。

改颜色、标题、姓名或文件名不算本章有效修改。

7. 与大语言模型协同

可在Qwen Code、Qwen Web或DeepSeek Web中使用以下请求,但只粘贴合成结果:

我正在做线性回归控制变量实验。正常和污染实验使用同一模型、同一干净测试集和同一样例,
只在训练集中改变了一条jump_distance记录。请先检查这个对照是否公平,再用趋势被异常点拉动
的思路解释预测和MAE变化;最后提出3条进入模型前的数据检查规则。不要把预测当成正式成绩。

你必须在Notebook中留下:原始意图、模型建议摘要、人工选择、实际改动与运行证据、最终判断。不要要求或提交模型隐藏的内部思维过程。

8. 关键原理

9. 验收清单

开发者或教师可运行:

python tools/verify_ch04.py

10. 深入思考

  1. 如果测试集也含同一条1800 cm记录,MAE变化还只代表模型被带偏吗?
  2. 跳远20 cm一定是录入错误吗?如何区分错误数据与真实少见情况?
  3. 加入“每周训练次数”可能改善模型,但需要补充哪些数据质量和隐私检查?

11. 权威延伸

若外部网站暂时无法访问,本教程和Notebook已包含完成本章所需的全部原理与代码。