【sklearn】KFold、StratifiedKFold、GroupKFold的区别

简介: 【sklearn】KFold、StratifiedKFold、GroupKFold的区别

1、KFold

>>> import numpy as np
 >>> from sklearn.model_selection import KFold
 >>> X = ["a", "b", "c", "d"]
 >>> kf = KFold(n_splits=2)
 >>> for train, test in kf.split(X):
 ...     print("%s %s" % (train, test))
 [2 3] [0 1]
 [0 1] [2 3]


kfold交叉验证,直接随机的将数据划分为k折。看代码中的划分,只需要一个X就可以决定了,不受class和group这两个影响。

class和group分别为数据的标签和我们给数据的分组。下面分别介绍如果受影响的代码:


2、StratifiedKFold


Stratified它会根据数据集的分布来划分,使得 划分后的数据集的目标比例和原始数据集近似,也就是构造训练集和测试集分布相同的交叉验证集

>>> from sklearn.model_selection import StratifiedKFold
 >>> X = np.ones(10)
 >>> y = [0, 0, 0, 0, 1, 1, 1, 1, 1, 1]
 >>> skf = StratifiedKFold(n_splits=3)
 >>> for train, test in skf.split(X, y):
 ...     print("%s %s" % (train, test))
 [2 3 6 7 8 9] [0 1 4 5]
 [0 1 3 4 5 8 9] [2 6 7]
 [0 1 2 4 5 6 7] [3 8 9]


3、GroupKFold

有时我们会将数据分组,这时候GroupKFold可能派上用场。

GroupKFold 会保证同一个group的数据不会同时出现在训练集和测试集上。因为如果训练集中包含了每个group的几个样例,可能训练得到的模型能够足够灵活地从这些样例中学习到特征,在测试集上也会表现很好。但一旦遇到一个新的group它就会表现很差。

>>> from sklearn.model_selection import GroupKFold
 >>> X = [0.1, 0.2, 2.2, 2.4, 2.3, 4.55, 5.8, 8.8, 9, 10]
 >>> y = ["a", "b", "b", "b", "c", "c", "c", "d", "d", "d"]
 >>> groups = [1, 1, 1, 2, 2, 2, 3, 3, 3, 3]
 >>> gkf = GroupKFold(n_splits=3)
 >>> for train, test in gkf.split(X, y, groups=groups):
 ...     print("%s %s" % (train, test))
 [0 1 2 3 4 5] [6 7 8 9]
 [0 1 2 6 7 8 9] [3 4 5]
 [3 4 5 6 7 8 9] [0 1 2]


来源:https://blog.csdn.net/qq_16761099/article/details/106091354


相关文章
|
3月前
|
算法
sklearn算法
sklearn算法
22 0
|
30天前
|
数据可视化
如何使用Sklearn库实现线性回归?
使用Sklearn实现线性回归的步骤包括导入库、准备数据、划分训练测试集、创建模型、训练预测、评估性能和可视化。
17 0
|
2月前
|
机器学习/深度学习 算法 索引
在Python中,`sklearn.preprocessing.OneHotEncoder` 类
在Python中,`sklearn.preprocessing.OneHotEncoder` 类
26 2
|
8月前
|
API
一、线性回归的两种实现方式:(二)sklearn实现
一、线性回归的两种实现方式:(二)sklearn实现
|
5月前
|
机器学习/深度学习 算法 Python
sklearn中的Bunch和dict的区别
sklearn中的Bunch和dict的区别
22 0
|
10月前
|
数据挖掘
Sklearn介绍1
Sklearn介绍
127 0
|
10月前
|
API Python
Sklearn介绍3
Sklearn介绍
73 0
|
10月前
|
机器学习/深度学习
Sklearn介绍2
Sklearn介绍
56 0
|
10月前
|
机器学习/深度学习 API
sklearn相关3
sklearn介绍
89 1
|
机器学习/深度学习 数据采集 资源调度
浅析sklearn中的数据预处理方法
在日常的机器学习开发过程中,基本的机器学习过程如下图所示。