机器学习中训练集、验证集(开发集)、测试集的定义及其划分

本文详细解释了在机器学习项目中,如何合理地划分训练集、验证集和测试集,以及这种划分在传统机器学习与大数据时代的不同策略。强调了正确的数据集划分对于模型训练和评估的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这三者是在进行一个机器学习项目中非常重要的内容。它们的确定往往决定了这个项目的走向。错误的训练集、开发集和测试集的划分很可能会让一个团队浪费数月时间。

training set:顾名思义,是用来训练模型的。因此它占了所有数据的绝大部分。

development set(validation set):用来对训练集训练出来的模型进行测试,对训练出的模型的超参数进行调整,不断地优化模型,。

test set:在训练结束后对训练出的模型进行一次最终的评估所用的数据集。

1.传统的机器学习领域中,由于收集到的数据量往往不多,比较小,所以需要将收集到的数据分为三类:训练集、验证集、测试集。也有人分为两类,就是不需要测试集。

比例根据经验不同而不同,这里给出一个例子,如果是三类,可能是训练集:验证集:测试集=6:2:2;如果是两类,可能是训练集:验证集=7:3。因为数据量不多,所以验证集和测试集需要占的数据比例比较多。

2.在大数据时代的机器学习或者深度学习领域中,如果还是按照传统的数据划分方式不是十分合理,因为测试集和验证集用于评估模型和选择模型,所需要的数据量和传统的数据量差不多,但是由于收集到的数据远远大于传统机器学习时代的数据量,所以占的比例也就要缩小。比如我们拥有1000000,这么多的数据,训练集:验证集:测试集=98:1:1。如果是两类,也就是相同的道理。

注意:有些人在把数据分类的时候是没有测试集数据,这样并不是十分合理,有测试集比较放心,建议把数据分类最好有这个数据集,也就是分为三类数据。

### 关于机器学习训练集验证集测试集的概念 在机器学习领域,数据被划分为多个集合以支持模型的有效构建与评估。具体而言: #### 训练集 (Training Set) 训练集是指供模型学习的数据集[^1]。在此阶段,模型会尝试识别输入特征与目标变量之间的关系模式,并据此调整内部参数以便更好地预测新样本的结果。 ```python from sklearn.model_selection import train_test_split # 假设 X 是特征矩阵, y 是标签向量 X_train, X_temp, y_train, y_temp = train_test_split(X, y, test_size=0.4, random_state=42) ``` 这段代码展示了如何利用 `train_test_split` 函数初步分离出一部分作为后续处理的临时数据(包括验证集测试集),而剩余大部分则构成训练集[^2]。 #### 验证集 (Validation Set) 验证集是从原始数据集中抽取出来的一部分,主要用于调优模型超参数以及防止过拟合现象的发生。通过不断迭代改进配置选项直至找到最优解之前,每次更新后的版本都会在这批固定不变的例子上接受检验;如果发现性能下降,则表明可能出现了过度适应特定情况而非普遍规律的趋势——此时应当回滚更改并探索其他可能性。 ```python # 继续上面的操作,进一步拆分得到验证集和最终测试集 X_val, X_test, y_val, y_test = train_test_split(X_temp, y_temp, test_size=0.5, random_state=42) ``` 这里再次运用相同的函数将先前预留出来的那部分资料细分为两份:一份成为正式意义上的验证集,另一份则是纯粹用于后期评测整体效果的测试集。 #### 测试集 (Test Set) 当所有前期准备工作完成之后,最后一个环节便是借助未曾见过的真实世界案例来衡量整个系统的实际效能水平。理想状态下,这个过程应该尽可能保持透明度,确保没有任何形式的人为干预影响到评判标准的一致性和公正性。 ```python def evaluate_model(model, features, labels): predictions = model.predict(features) accuracy = sum(predictions == labels) / len(labels) return accuracy accuracy_score = evaluate_model(fitted_model, X_test, y_test) print(f'Test Accuracy: {accuracy_score:.4f}') ``` 上述脚本定义了一个简单的辅助功能来进行准确率计算,并打印出了针对给定测试集所获得的成绩报告。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值