wordpress做的网站吗,wordpress 音乐播放器,chrome官方下载,自建视频网站交叉验证是一种统计分析方法#xff0c;它的目的是通过在同一数据集上重复并分割训练和测试数据#xff0c;来评估机器学习模型的性能。以下是这三种交叉验证方法的区别#xff1a; KFold#xff08;K-折叠#xff09; 在KFold交叉验证中#xff0c;原始数据集被分为K个… 交叉验证是一种统计分析方法它的目的是通过在同一数据集上重复并分割训练和测试数据来评估机器学习模型的性能。以下是这三种交叉验证方法的区别 KFoldK-折叠 在KFold交叉验证中原始数据集被分为K个子集。每次其中的一个子集被用作测试集而其余的K-1个子集合并后被用作训练集。这个过程重复进行K次每次选择不同的子集作为测试集。KFold不保证每个折叠的类分布与完整数据集中的分布相同。 Stratified-KFold分层K-折叠 Stratified-KFold是KFold的变体它会返回分层的折叠每个折叠中的标签分布都尽可能地与完整数据集中的标签分布相匹配。这种方法特别适用于类分布不均衡的情况确保每个折叠都有代表性的类比例。就像KFold一样每个折叠轮流被用作测试集其他折叠用作训练集。 StratifiedShuffleSplit分层随机分割 StratifiedShuffleSplit是另一种分层抽样技术它也确保了每次分割中都能维持原始数据集中各个类的比例。与Stratified-KFold不同StratifiedShuffleSplit将数据集随机打乱然后切分为训练集和测试集。这个过程会根据需要重复多次。这种方法提供了更多的随机性并可以通过指定测试集的大小来控制训练集和测试集的比例。
接下来我们用代码来解释他们的区别
一. Kfold
先来创建数据集
splits 5
tx range(10)
ty [0] * 5 [1] * 5
再来导入相应的模块
from sklearn.model_selection import KFold
from sklearn.model_selection import StratifiedKFold
from sklearn.model_selection import StratifiedShuffleSplit,
from sklearn import datasets
先实例化一个KFoldshuffle Flase的情况
Kfold KFold (n_splitssplits, shuffleFalse)
再来看看Kfold是如何来做交叉验证的
print(Fold)
for train_index, test_index in Kfold.split(tx, ty):print(TRAIN:, train_index, TEST:, test_index)
输出结果为 可以看到Kfold的测试集是按照顺序不重复的每次取出两个一共做5次训练。
当shuffle true时再来运行一次代码
Kfold KFold (n_splitssplits, shuffleFalse)print(Fold)
for train_index, test_index in Kfold.split(tx, ty):print(TRAIN:, train_index, TEST:, test_index) 可以看到Kfold的测试集是无规则不重复的每次取出两个一共做5次训练。
二. Stratified-KFold
我们用相同的数据集先来看看shuffle False的情况
stratKfold StratifiedKFold(n_splitssplits, shuffleFalse)
print(stratKFold)
for train_index, test_index in stratKfold.split(tx, ty):print(TRAIN:, train_index, TEST:, test_index) 可以看到测试集被分层了。因为我们是二分类数据所以每次都是从0类中抽一个1类中抽一个而且是按顺序抽取即从0类的第一个数据1类的第一个数据组合形成一个测试集。数据是不重复的。
先来看看shuffle true的情况 可以看到测试集依然被分层抽取但不是按照顺序抽取且依旧保证数据是不重复的。
三. StratifiedShuffleSplit
先来实例化一个StratifiedShuffleSplit并分隔数据集
shufflesplit StratifiedShuffleSplit(n_splitssplits, random_state42, test_size2)
for train_index, test_index in shufflesplit.split(tx, ty):print(TRAIN:, train_index, TEST:, test_index) 可以看到测试集被分层了同时我们可以根据test_size选择测试集的比例并且数据是可以重复的可以看到测试集3出现了2次。但我们把test_size设置为0.3时 可以看到测试集有3个样本多个数据发生了重复。
总结一下Kfold交叉验证不考虑样本标签是否均衡的问题仅是单纯的将样本分为K份1份是测试k-1份做训练Stratified-KFold会根据样本标签分类让训练集和测试集都保持原有样本的标签分类情况shuffle False or true决定的是分隔是顺序分隔还是随机分隔同时数据是不可重复利用的StratifiedShuffleSplit可以对数据进行重复利用也只有StratifiedShuffleSplit可以控制测试集和训练集的比例。