训练数据集如何划分验证测试集?train/test(val/dev) set和交叉验证(cross validation)
普通train/test set
直接将训练数据划分为两部分,一部分用来做训练train set
,一部分用来固定作为测试集test set
。然后反复更换超参在训练集上进行训练,使用测试集依次测试,进行m次,可以得到每一组超参在测试集上的结果,我们叫做评价指标,记为pmp_mpm,然后根据这m个结果,选一个最好的,得到最优超参数。最后,使用那个最优超参数,用所有数据进行训练,得到模型的权重参数,毕竟这才是我们需要的。
注意:
- 上面的test set在训练的过程中大多的时候叫做validation set或者叫做dev set(development开发集)。
- 上面的评价指标p不一定需要只看测试集上的正确率,可以取测试集和训练集上正确率的平均。
实践:
import numpy as np
from sklearn.model_selection import train_test_split
#生成训练数据
x=np.linspace(1,8,8).reshape(4,2)
#生成标签
label=list([1,0,1,1])#打印看看
print(x)
print(label)#对半(0.5)划分训练数据。
trainx,testx,lable1,label2=train_test_split(x,y,test_size=0.5,shuffle=False)#打印看看
print(trainx)
print(testx)
结果如下:
1.原始训练数据x,原始训练数据x对应的的标签label。
2.划分数据之后的trainx,testx。
交叉验证(cross validation)
举个例子可能会比较好理解。
考虑三层神经网络FNN,比如F(d,h,c),其中d,h,c是超参数,d是样本每一个样本点的维度,h是隐藏层节点个数,c是样本类别总数。
做法:
- 将训练数据划分成k份
- 确定超参数,比如F(3,3,3),10000个epochs,设置好batch,并初始化权重参数。
- 第一次使用训练数据中的第1,2,…k-1份做训练
- 用第k份的训练数据用来做测试,比如你用了一个指标正确率,那么记录下来,p1。
- 保持超参数不变,重新初始化F(3,3,3)的权重参数。
- 第二次使用训练数据中的第2,…k-1,k份做训练
- 用第1份的训练数据用来做测试,记录指标p2。
- 重复5-7步直到一共训练了k次,并得到了p1,p2,…pk。求平均作为这一组超参数好不好的评价指标。记为M1
- 重复2-8步,得到M1,M2,…Mm,(假设你调超参了m次,炼丹大师)
- 比较指标M1,M2,…Mm,选择最好的那一个,显然这个模型是你想要的,但是我们获得了模型的超参数,还没有获得模型的权重参数,因为这个超参数对应得权重参数有k个。这个时候,我们可以用整个训练数据(不再进行划分),进行训练得到最终的权重参数。
选上面哪一个划分验证集的方法?
我感觉:
如果训练数据量中等的话,或许选交叉验证好,但也没有事实依据。
如果训练数据量大的话,应该没得区别,交叉验证反而麻烦。
如果训练数据量小的话,就别验证了吧,训练数据:我全都要!
训练数据集如何划分验证测试集?train/test(val/dev) set和交叉验证(cross validation)相关推荐
- 【YOLOv5 数据集划分】训练和验证、训练验证和测试(train、val)(train、val、test)
[YOLOv5 数据集划分]训练和验证.训练验证和测试(train.val),(train.val.test) ①在已有测试集的情况下划分训练集和验证集 # 将图片和标注数据按比例切分为 训练集和测试 ...
- paddle静态图训练,训练集和测试集效果都有很好,但验证集上效果很差
在paddle静态图训练中,训练集和测试集效果都有很好,但验证集上效果很差 在paddle的训练中,如果使用这样的方式进行训练 main_program = fluid.default_main_pr ...
- 机器学习数据集的获取和测试集的构建方法
这是机器学习入门系列(2)–如何构建一个完整的机器学习项目的第二篇 上一篇机器学习入门系列(2)–如何构建一个完整的机器学习项目(一)介绍了开始一个机器学习项目需要明确的问题,比如当前任务属于有监督还 ...
- 【Science】破解密码“AlphaGo”诞生,训练Gan破解27%LinkedIn测试集密码
本文讲的是破解密码"AlphaGo"诞生,训练Gan破解27%LinkedIn测试集密码,一项新的研究旨在使用生成对抗网络(GAN) 来加快密码破解的速度.斯蒂文斯理工学院的研究人 ...
- 训练数据集的图片尺寸修改集标注标签修改
训练数据集的图片尺寸修改集标注标签修改 在针对同一角度拍摄的多张已完成标注图片使用深度学习的方式对数据集进行训练时,时长会出现感兴区域过小的情况,固定角度拍摄所得到的图片数据集往往存在部分位置区域可以 ...
- [深度学习-实践]Tensorflow 2.x应用ResNet SeNet网络训练cifar10数据集的模型在测试集上准确率 86%-87%,含完整代码
环境 tensorflow 2.1 最好用GPU Cifar10数据集 CIFAR-10 数据集的分类是机器学习中一个公开的基准测试问题.任务的目标对一组32x32 RGB的图像进行分类,这个数据集涵 ...
- k折交叉验证matlab 流程_第51集 python机器学习:分层K折交叉验证及其他方式
由于出现类似鸢尾花数据集这种分段数据可能简单的交叉验证无法适用,所以这里引用了分层K折交叉验证.在分层交叉验证中,我们划分数据,使得每个折中类别之间的比例整数与数据集中的比例相同,如下图所示: mgl ...
- 交叉验证的几个方法的解释(简单交叉验证、k折交叉验证、留一法)
针对经验风险最小化算法的过拟合的问题,给出交叉验证的方法,这个方法在做分类问题时很常用: 一:简单的交叉验证的步骤如下: 1. 从全部的训练数据 S中随机选择 中随机选择 s的样例作为训练集 trai ...
- 训练集 验证集_训练与验证、测试集数据分布不同的情况
在不同分布的数据集上进行训练与验证.测试 深度学习需要大量的数据,但是有时我们可获得的满足我们真实需求分布的数据并不是那么多,不足以对我们的模型进行训练.这时我们就会收集大量相关的数据加入到训练集中, ...
最新文章
- Mapbox HTML可视化点,线,多线,面带底图
- c++创建包含opencv的dll供C,C#调用
- 获取服务器路径的方式 【记录】
- MySQL常见面试题及答案汇总1000道(春招+秋招+社招)
- 【Problem solved】 error C2665: “loadimage”: 2 个重载中没有一个可以转换所有参数类型...
- Spring Boot 如何自定义Starter,你知道吗?
- 单纯形 c语言 程序,单纯形法完全c语言程序
- java中IO流用到了哪种设计模式
- Qtum 量子链跨链原子激活 实现 QTUM-BTC 交换
- 2022年中国商业十大热点展望:共同富裕、碳达峰碳中和、创新、数字化、新国货.........
- Mysql 解决left join 数据重复的问题
- 使用express重构博客项目
- 没想到 Python 中竟然还藏着这些稀奇古怪的东西...
- SCCM 2016安装部署
- linux使用光盘镜像(ISO)作为软件源安装软件
- 机器学习笔记(一)-局部加权回归(Locally weighted regression)LWR
- 10年网安经验分享:一般人别瞎入网络安全行业
- 网络——数字数据编码
- Comet OJ - 2019国庆欢乐赛(赛后整理)
- OA系统流程效率改进方案