机器学习中有一个问题是不可避免的,那就是划分测试集和训练集。为什么要这么做呢,当然是提高模型的泛化能力,防止出现过拟合,并且可以寻找最优调节参数。训练集用于训练模型,测试集则是对训练好的模型进行评估的数据集。通常来说,训练集和测试集是不会有交集的,常用的数据集划分方法有以下两种:
留出法k折交叉验证法直接将原数据集划分为两个互斥的数据集,即训练集与测试集。sklearn直接提供给我们这样的方法,便于操作
sklearn.model_selection.train_test_split(*arrays, **options)
参数含义
test_size测试集占总数据的大小,以(0.0,1.0)之间的小数表示,默认值为0.25random_state随机数种子:其实就是该组随机数的编号,在需要重复试验的时候,保证得到一组一样的随机数。比如你每次都填1,其他参数一样的情况下你得到的随机数组是一样的。但填0或不填,每次都会不一样。通过构造一个二维数组实现函数的功能
import numpy as np
from sklearn.model_selection import train_test_split
X, y = np.random.randint(10,size=(5,2)), list(range(5))
X
[3, 0],
[9, 0],
[5, 9],
[0, 7]])
y
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=23)
X_train
[8, 4],
[5, 9]])
X_test
[0, 7]])
y_train
y_test
可见结果是符合设定要求的,运用时也很简单,只需将划分后的各部分数据集弄清楚不混淆即可。sklearn.model_selection.train_test_split
K折交叉验证,这是将数据集分成K份,所谓K折就是将数据集通过K次分割,使得所有数据既在训练集出现过,又在测试集出现过。当然,每次分割中不会有重叠,即不会有交集,相当于无放回抽样。
sklearn.model_selection.KFold(n_splits=’warn’, shuffle=False, random_state=None)
参数含义n_split折叠数量,最少为2。默认为3。shuffle是否在分割之前对数据进行洗牌。默认为falserandom_state随即种子数。同样的通过构造数组实现函数的功能了解函数的使用方法:
from sklearn.model_selection import KFold
import numpy as np
X = np.array([[1, 2], [3, 4], [5, 6], [7, 8]])
y = np.array([1, 2, 3, 4])
kf = KFold(n_splits=4)
for train_index, test_index in kf.split(X):
print("TRAIN:", train_index, "TEST:", test_index)
X_train, X_test = X[train_index], X[test_index]
y_train, y_test = y[train_index], y[test_index]
可以看到,在最后的结果中,并不会出现两次同样的数据。这样可以保证划分后的数据每一份都能作为一次测试集。(需要注意的是,这里用的是原数据集的索引,而不是直接引用数据)sklearn.model_selection.KFold
这两个方法的主要区别在于,留出法中测试集对应的模型与训练的模型相比可能具有较大差距,降低保真性,这种没有较好的解决办法,只能人工去调整正负样本的比例,保证训练集与测试集正负样本比例大致相同,常见做法是将大约2/3~4/5的样本用于训练,剩余样本留作测试。
k折交叉验证法不受随机样本划分方式的影响,训练出来的模型与总的数据集模型很相似。缺点在于计算成本高,数据集小的话还可以,当数据规模很大时,计算时间以及成本就相当惊人了。一般来说,根据经验我们一般选择k=5或10。
相关知识
机器学习模型评估与选择(关于训练集和测试集)
YOLO数据集划分教程:如何划分训练、验证和测试集
机器学习避坑指南:训练集/测试集分布一致性检查
深入剖析训练与模型评估:从数据集划分到过拟合处理与优化策略
深入理解AI训练集、验证集与测试集:数据分割与交叉验证
机器学习训练集、验证集、测试集,分类问题和回归问题评估指标,交叉验证法,macro avg与weighted avg含义,roc
训练集和测试集的分布一致性分析
【机器学习基础】机器学习的模型评估(评估方法及性能度量原理及主要公式)
机器学习之数据预处理(Python 实现)
深度学习数据集
网址: 机器学习:训练集与测试集的划分 https://m.mcbbbk.com/newsview363352.html
上一篇: 健身垫怎么选?健身垫选购指南 |
下一篇: 宠物诊所医院内部空间规划与功能区 |