机器学习时候必须要分为训练集、验证集和测试集嘛

在机器学习中,为了准确评估模型的性能和找到最佳的超参数配置,通常将数据集划分为训练集、验证集和测试集。在这种情况下,验证集用于调参和模型选择,而测试集则用于最终的模型评估。

具体流程如下:

  1. 划分数据集:将数据集划分为训练集、验证集和测试集。一般三者比例是0.8:0.1:0.1或者0.6:0.2:0.2。

  2. 训练模型:使用训练集训练模型,并根据验证集上的性能指标进行调参和模型选择。例如,可以尝试不同的超参数组合,选择在验证集上性能最好的模型。

  3. 模型评估:在完成调参和模型选择后,使用测试集对最终选定的模型进行评估。测试集提供了一个客观的度量,用于衡量模型在未见过的数据上的泛化能力。

通过将测试集与验证集分开,可以避免在模型选择过程中过度拟合验证集,并获得更准确的模型性能估计。这样可以确保对模型的评估是基于未直接与模型相关联的数据进行的。

重要的是要注意,在整个调参和模型选择的过程中,测试集应该被严格保留,不参与任何形式的调优和选择。这样可以确保测试集的独立性,并对最终的模型性能提供一个真实的估计。

模板代码:

将数据集划分为训练集、验证集和测试集,比例是0.8:0.1:0.1。

复制代码
from sklearn.model_selection import train_test_split

#0.8:0.1:0.1 划分为训练集、验证集和测试集
# 将数据分为训练集和剩余数据(包括验证集和测试集)
X_train, X_remaining, y_train, y_remaining = train_test_split(X, y, test_size=0.2, random_state=0)
# 将剩余数据分为验证集和测试集
X_val, X_test, y_val, y_test = train_test_split(X_remaining, y_remaining, test_size=0.5, random_state=0)
相关推荐
冬奇Lab8 分钟前
Skill 系列(04):Skill 指标体系——L1/L2/L3 三层监控,让质量下降有据可查
人工智能·开源·llm
IT_陈寒1 小时前
Vite的静态资源打包让我熬夜到三点,这坑千万别跳
前端·人工智能·后端
玩转AI不是事2 小时前
用IndexedDB做AI对话离线缓存实战
人工智能
Asize3 小时前
多模态生图:从 Vite 工程化到前端调用 Qwen Image
javascript·人工智能·后端
MobotStone3 小时前
AI项目越多,为什么越容易失控
人工智能·aigc
十有八七3 小时前
AI时代的置身X内
前端·人工智能
Lkstar3 小时前
A2A协议深度解析|Agent2Agent通信标准,智能体互联网的"HTTP"
人工智能·llm
百度Geek说3 小时前
当代码越来越便宜,什么在变贵?
人工智能
橘子星3 小时前
LLM 无状态架构实践:从原理到代码落地
前端·javascript·人工智能
召钱熏3 小时前
裸聊可用 ≠ 工作流可用:Gemma4 12B 接入 Claude Code 的真实踩坑复盘
人工智能