机器学习

训练集、验证集与测试集

训练集验证集测试集数据划分
一句话摘要

机器学习中数据划分的基本概念:训练集用来学习,验证集用来调参,测试集用来最终考试。

为什么要划分数据?

如果用同一批数据既训练模型又评估模型,就像用考试原题来考试——得分再高也不说明真的学会了。

把数据划分成不同的子集,是为了客观评估模型在新数据上的表现能力(泛化能力)。

三个数据集的作用

训练集(Training Set)

  • 用途:训练模型,让模型学习数据中的规律
  • 使用时机:训练过程中
  • 比例:通常占60%-80%

验证集(Validation Set)

  • 用途:调整超参数(如学习率、网络层数)、选择最优模型
  • 使用时机:训练过程中
  • 比例:通常占10%-20%

测试集(Testing Set)

  • 用途:最终评估模型性能,模拟模型在真实场景中面对未见数据的表现
  • 使用时机:训练结束后
  • 比例:通常占10%-20%

三者的关系

训练集 → 训练模型参数(权重、偏置)

验证集 → 选择超参数和模型架构(过程中反复使用)

测试集 → 最终的"期末考试"(只用一次)

常用划分比例

方案训练集验证集测试集
简单划分70%15%15%
大数据集98%1%1%
Sklearn默认80%-20%

使用Scikit-learn划分数据

from sklearn.model_selection import train_test_split

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)

test_size=0.2 表示20%的数据作为测试集。

考试要点

  • 训练结束后用于模型评估的是测试集
  • 验证集用于训练过程中的超参数调优
  • 测试集模拟模型面对未见数据的表现
  • train_test_split 是 Scikit-learn 中划分数据的标准方法
微信二维码

扫码备注【NOAI】加交流群