实验 05 / 约 45 分钟
给模型留一场真正的考试
模型是否已经见过拿来考试的题?
未开始这和大模型有什么关系?
评估语言模型也要防止测试内容进入训练或调参过程。否则得分可能高估面对新任务的能力。这里用十条数据,练习守住训练与评估的边界。
这个实验能解释到哪里:下方演示的是预处理均值泄漏。大模型的评测污染还可能来自重复文本、近似题目、公开答案等,不能只靠随机分组解决。
动手时带着这个问题:把测试数据混入统计过程,观察信息怎样提前流入训练。
还没建立全貌?先看一次回答的完整过程 ↗LAB / SPLIT亲手划分十条数据
试一试把数值 24 的样本移入训练集,看训练均值如何变化。
同一个原理 · 两种讲法
先理解,再往深处走。
三份数据各有任务
训练集像练习题,用来调整参数;验证集像模拟考,用来选择方法;测试集像最后的考试,用来评估已经定下来的方案。
考试答案不能混进练习过程
即使只是计算平均数,也只能用训练集。把测试集一起算进去,会让预处理提前知道考试数据的信息,这叫数据泄漏。
点一下,换一份分组
下面每个样本都能在训练、验证、测试之间切换。观察“训练集平均数”和“全部数据平均数”,再打开错误示范。没有训练样本时,这个实验必须拒绝计算。
在线实验的数学设定
在线的十个标量样本为 [2,3,4,5,6,7,8,9,20,24],默认按顺序分成 6/2/2。训练均值为 4.5,全量均值为 8.8;后者引入验证、测试分布的信息。这里专门演示预处理统计量的泄漏,不训练预测模型,也不推断实际精度。真实项目应按时间、用户或数据来源选择防泄漏的划分方式。
前置知识
- 亲手实现梯度下降
本节目标
- 区分训练集、验证集与测试集
- 识别预处理中的数据泄漏
三种数据承担三种职责
训练集用于拟合参数;验证集用于比较模型和选择超参数;测试集在方案确定后评价泛化表现。把测试分数反复拿来改方案,测试集就逐渐变成了验证集。
先划分,再拟合预处理
标准化中的均值和方差也从数据中学来。应该只用训练集计算,再原样应用到验证和测试数据。先对全部数据标准化再切分,会把测试数据的信息带进流程。
随机切分并不总合适
同一个人的多条记录要考虑按人分组;时间序列通常要按时间切分。把同一对象的近重复样本分进训练和测试,得到的高分可能只说明模型认出了熟面孔。
小数据只能教流程
本节用十个数展示 6/2/2 的切分,便于手算,并不声称这个比例适用于任何任务。真实项目还要考虑样本量、类别覆盖、分布变化以及评估的不确定性。
训练:拟合参数 验证:选择方案 测试:最终评价Python / 只用标准库 / 无需 GPU
在自己的电脑上复现
运行 split 实验,确认三组索引无交集。比较训练集均值与全量均值。写出一种不能简单随机切分的业务数据及理由。
下载实验代码 ↓保存为 ai_lab.py,在 Python 3.10 或以上运行。本单元使用人造数据,不调用外部服务。Python 练习与在线实验采用各自的小数据例子,练习相同原理,不要求数值逐项相同。
python ai_lab.py --lesson split程序包含结果断言;如果不满足预期会报错。第 7 节会在运行目录生成 report.json。运行后,回到笔记写下你的观察与改动。
继续读原始资料
本站提供原创导读;以下链接前往资料原站。仅本成人学习栏目提供这些精选来源。
scikit-learn · 常见陷阱与数据泄漏 ↗英文 · 阅读数据泄漏与一致预处理核对日期 2026-09-21只对你可见
我的学习记录
登录后可保存笔记、打卡和学习进度。
删除本节的私密记录
删除本节进度、笔记、关联与打卡;其他课程和原作品保留。
验证方式 / 本节三题知识检验 v1
合上导读,检验一下
全部答对后记录“通过验证”。这表示通过本节知识小测,不等同于独立完成代码、人工评阅或能力认证。