单元一
第4课 train_test_split 与为什么要拆分

一、任务目标
把数据拆成「练习册」和「期末卷」,并打印两边大小。
二、核心概念讲清楚
train_test_split 把数据拆成训练集(用来 fit)和测试集(用来评估)。否则模型可能「背答案」而不会泛化。
- 训练集:教模型用
- 测试集:考模型用,默认不要参与训练
- random_state 固定后,每次划分可复现
random_state 像抽签用的「起始号码」:固定同一个数,同学之间拆分结果可对照;不固定则每次随机划分可能不同。
1准备 X,y完整数据表
2调用划分train_test_split
3得到四段X_train/X_test/y_train/y_test
4只在 train 上 fit再在 test 上预测评估
三、跟着想一遍(小例子)
iris 数据划分后,用 X_train,y_train fit,再用 X_test 预测,与 y_test 对比正确率。
易错:先用全部数据 fit,再拿同一批数据「测试」,分数虚高。
正确:严格分开:训练归训练,测试归测试。
想一想:为什么要固定 random_state?(提示:方便同学之间结果可对照。)
四、解题思路
任务:把数据拆成「练习册」和「期末卷」,并打印两边大小。 先想清楚:输入是什么、处理后得到什么、屏幕上应出现什么。
本课主要用到:屏幕输出。
- 1明确任务「把数据拆成「练习册」和「期末卷」,并打印两边大小。」:运行后你希望看到什么结果(文字、图形或计算结果)。
- 2用 print 把结果说出来,确认屏幕上出现预期内容。
- 3对照参考代码跑通后,只改一个参数,观察结果如何变化。
流程示意(可对照左侧文字)
五、语句功能讲解
下面只列出本课首次出现的语句/函数。已在前面课讲过的不再重复;先认新语句,再对照参考代码。
| 语句 | 作用 | 本课用法 |
|---|---|---|
range() | 生成一串整数 | 常与 for 配合:for i in range(4) |
for | 按次数或按元素重复 | 少写重复代码,画出重复图案。 |
六、知识点讲解
过拟合是模型把训练集记得太死,换新数据就差。要用没见过的数据检查;好模型是「会举一反三」,不是「只会背题」。
先弄清本课输入与输出,再进编程练习对照现象。
七、编程练习
先理解上面的例子,再在下方 Mixly 运行与检查(含 scikit-learn)。
观察训练/测试各有几条。
参考代码(对照抄写到下方 Mixly)
from sklearn.model_selection import train_test_split
X = [[1], [2], [3], [4], [5], [6], [7], [8]]
y = [0, 0, 0, 0, 1, 1, 1, 1]
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.25, random_state=0
)
print("训练样本数:", len(X_train))
print("测试样本数:", len(X_test))
print("y_test:", y_test)
正在载入编程环境
正在载入 Mixly 文本编程环境…
八、课堂练习
先完成两道正误判断,再做其余题目;选出后点「检查」。
判断:只抄参考代码,不看运行输出,也不改参数验证。
判断:先跑通,再对照「训练集」改一处输入/参数,确认输出按预期变化;答错小测时读讲解。
测试集的正确用法是?
random_state 固定后通常会?
九、本节小结
先拆分,再训练,最后在测试集上打分。下一单元进入分类:近邻算法与鸢尾花。