美文网首页
小窥KFold及其变体

小窥KFold及其变体

作者: 井底蛙蛙呱呱呱 | 来源:发表于2020-08-17 11:00 被阅读0次

在sklearn中有多种划分数据集方法,如最常用的train_test_split, KFold, 以及KFold变体GroupKFold, StratifiedKFold。本文主要对这3种K折交叉验证数据集划分方法做一个简单介绍:

  • KFold,最朴素的K折交叉验证划分方法,通常是按数据集顺序对数据集进行划分k折,当然也可以通过shuffle参数先对数据进行打乱,然后再进行划分k折;

  • GroupKFold,GroupKFold按照指定的groups来划分验证集合训练集,如kaggle中有人对时间序列数据集构建验证集时,按weekday、weekend或者不同月份来构建groups;

  • StratifiedKFold,顾名思义,StratifiedKFold指在划分数据集时使用了层次抽样。

import numpy as np
from sklearn.model_selection import KFold,GroupKFold,StratifiedKFold
X=np.array([[1,2],[3,4],[5,6],[7,8],[9,10],[11,12],[13,14],[15,16],[17,18],[19,20]])
y=np.array([1,1,1,1,2,2,2,3,3,3])
 
#KFold
print('KFlod:')
kf=KFold(n_splits=5)
for train_index,test_index in kf.split(X):
    print("Train Index:",train_index,",Test Index:",test_index)
    X_train,X_test=X[train_index],X[test_index]
    y_train,y_test=y[train_index],y[test_index]

# GroupKFold
print('GroupKFold:')
# 这里可以将groups中的不同数值理解成不同的月份,譬如1对应1月份,2对应2月份,3对应3月份,然后分别使用1,2,3月份的数据构建验证集
groups=np.array([1,1,1,1,2,2,2,3,3,3])
group_kfold=GroupKFold(n_splits=3)
for train_index,test_index in group_kfold.split(X,y,groups):
    print("Train Index:",train_index,",Test Index:",test_index)
    X_train,X_test=X[train_index],X[test_index]
    y_train,y_test=y[train_index],y[test_index]


# StratifiedKFold
print('StratifiedKFold:')
skf=StratifiedKFold(n_splits=3)
for train_index,test_index in skf.split(X,y):
    print("Train Index:",train_index,",Test Index:",test_index)
    X_train,X_test=X[train_index],X[test_index]
    y_train,y_test=y[train_index],y[test_index]

需要指出的是,对于GroupKFold,其中group参数的unique值个数需要与splits数相同。

除了上面提及的几个构建交叉验证数据集的方法之外,还有ShuffleSplit,GroupShuffleSplit,StratifiedShuffleSplit。这三种方法可以看作是train_test_split和KFold的一个融合,具体用法可参考sklearn中的数据集的划分

参考:
sklearn的KFold,GroupKFold,StratifiedKFold区分
sklearn中的数据集的划分

相关文章

  • 小窥KFold及其变体

    在sklearn中有多种划分数据集方法,如最常用的train_test_split, KFold, 以及KFold...

  • KFold

    Paramters n_splits:int,默认3分割数据的份数,至少为2shuffle:布尔,可选分割数据之前...

  • 邻女窥墙|宋玉辞赋中的成语典故(4)

    邻女窥墙,出自宋玉《登徒子好色赋》,变体有:三年窥墙、东墙窥宋、宋玉东邻、东邻女、东家女、东家之子、阳城惑、下蔡迷...

  • 干货|ResNet及其变体概述

    本文作者为图普科技工程师,英文版本地址为:https://medium.com/towards-data-scie...

  • Python机器学习库sklearn KFold交叉验证分组情况

    from sklearn.cross_validation import KFoldfold = KFold(50...

  • 【sklearn】KFold、StratifiedKFold、G

    1、KFold kfold交叉验证,直接随机的将数据划分为k折。看代码中的划分,只需要一个X就可以决定了,不受cl...

  • 以连咖啡为例,设计小程序的流量裂变体系

    文/独孤伤 一、连咖啡小程序的裂变体系 连咖啡小程序是笔者印象中裂变体系做得比较好的,通过这套裂变体系,实现了一天...

  • 数据集划分方法

    K折交叉验证 模块 |---|---sklearn.model_selection.KFold |sklearn....

  • 小窥

    由于金融A股的暴跌,北京一些银行都开始了上访的情况,特警啥的也都出现了,这不得不让人深思了,到底是房地产引发的一些...

  • 小窥

    最喜欢上班之暇从窗口俯视临楼顶层的游泳池,看着游泳的人或舒展熟练或紧张搞笑的姿势,分享着他们又闲又有钱的惬意。

网友评论

      本文标题:小窥KFold及其变体

      本文链接:https://www.haomeiwen.com/subject/tnifjktx.html