机器学习不是“把所有数据扔给模型学”,而是要留一部分数据,检查模型到底有没有真正学会。
机器学习的目标是:
1.训练集:真正拿来让模型学习的数据。
它既有输入,也有输出。
在训练(Training)时,模型获取输入进行预测并与正确结果对比,如果预测错了就调整参数,继续训练。
疑问:谁修改参数?修改什么参数?训练的具体过程是怎样的。
注意一个概念:过拟合Overfitting。就是指模型在训练集上表现很好,但其实也只是如此了,背住了。
2.测试集:模型训练期间完全不能看的“期末考试”。
举个例子:有1000 条数据,其中我们将700条作为训练集,剩下的300条均分为测试集和验证集。即:700 → 训练集,150 → 测试集,150 → 验证集
等模型training完成之后,再去做测试集如果:
训练集 Accuracy = 95%
测试集 Accuracy = 93%
则说明模型泛化能力不错,训练的比较成功。而如果:
训练集 Accuracy = 99%
测试集 Accuracy = 72%
则说明模型测试结果不理想,加上训练集结果不错,可能出现了过拟合。
3.验证集:模拟考试。
在实际模型测试的时候,不可能一次就达到理想的准确率,所以要不断地调整模型中的参数,调整完参数之后再进行测试。想一想如果这个过程中模型一直再测试集上进行反复测试就会出现针对性。
4.代码中实现集合划分
from sklearn.model_selection import train_test_split X_train,X_teset,y_train,y_test = train_test_split( X, y, test_size=0.2, random_state=42, stratify=y )5.整个训练模型的过程
原始数据 X, y
↓
train_test_split
↓
Train - Validation - Test
训练参数 调模型 最终评价