kfold和StratifiedKFold 用法
kfold和StratifiedKFold 用法
- 两者区别
- 代码及结果展示
- 结果分析
- 补充:random_state(随机状态)
两者区别
代码及结果展示
from sklearn.model_selection import KFold
from sklearn.model_selection import StratifiedKFold
#定义一个数据集
img_dataset=[[0,0],[1,1],[2,2],[3,3],[4,4],[5,5],[6,6],[7,7],[8,8],[9,9]]
img_label=[0,0,0,0,1,1,1,1,1,1]
#非随机的kfold
kfolds = KFold(n_splits=2, shuffle=False)
for train_index_ls,val_index_ls in kfolds.split(img_dataset,img_label):print("train_index_ls=%s,val_index_ls=%s"%(train_index_ls,val_index_ls))for train_img_index in train_index_ls:print("img=%s,label=%s"%(img_dataset[train_img_index],img_label[train_img_index]))
train_index_ls=[5 6 7 8 9],val_index_ls=[0 1 2 3 4]
img=[5, 5],label=1
img=[6, 6],label=1
img=[7, 7],label=1
img=[8, 8],label=1
img=[9, 9],label=1
train_index_ls=[0 1 2 3 4],val_index_ls=[5 6 7 8 9]
img=[0, 0],label=0
img=[1, 1],label=0
img=[2, 2],label=0
img=[3, 3],label=0
img=[4, 4],label=1
#随机生成kflod
kfolds = KFold(n_splits=2, shuffle=True)
for train_index_ls,val_index_ls in kfolds.split(img_dataset,img_label):print("train_index_ls=%s,val_index_ls=%s"%(train_index_ls,val_index_ls))for train_img_index in train_index_ls:print("img=%s,label=%s"%(img_dataset[train_img_index],img_label[train_img_index]))
train_index_ls=[0 1 3 5 9],val_index_ls=[2 4 6 7 8]
img=[0, 0],label=0
img=[1, 1],label=0
img=[3, 3],label=0
img=[5, 5],label=1
img=[9, 9],label=1
train_index_ls=[2 4 6 7 8],val_index_ls=[0 1 3 5 9]
img=[2, 2],label=0
img=[4, 4],label=1
img=[6, 6],label=1
img=[7, 7],label=1
img=[8, 8],label=1
#非随机生成stratifiedKFolds
stratifiedKFolds = StratifiedKFold(n_splits=2, shuffle=False)
for train_index_ls,val_index_ls in stratifiedKFolds.split(img_dataset,img_label):print("train_index_ls=%s,val_index_ls=%s"%(train_index_ls,val_index_ls))for train_img_index in train_index_ls:print("img=%s,label=%s"%(img_dataset[train_img_index],img_label[train_img_index]))
train_index_ls=[2 3 7 8 9],val_index_ls=[0 1 4 5 6]
img=[2, 2],label=0
img=[3, 3],label=0
img=[7, 7],label=1
img=[8, 8],label=1
img=[9, 9],label=1
train_index_ls=[0 1 4 5 6],val_index_ls=[2 3 7 8 9]
img=[0, 0],label=0
img=[1, 1],label=0
img=[4, 4],label=1
img=[5, 5],label=1
img=[6, 6],label=1
结果分析
1.K折,会将数据集分成K份,同时会将(k-1)份作为训练集,剩余1份作为验证集。一共会有K个组合,即每一份都会有机会作为验证集。
2.如果不打乱顺序,会先抽出验证集,剩下的作为训练集。以此往后,得到K个组合。
3.StratifiedKFold会从每一个类比中,等比例的划分每一折,即每一折里的类别比例都是一样的。
补充:random_state(随机状态)
stratifiedKFolds = StratifiedKFold(n_splits=2, shuffle=True)
每次的分组都不太一样:
val_index_ls=[0 1 4 5 6] 、val_index_ls=[2 3 4 5 6]
val_index_ls=[0 3 4 6 7]、val_index_ls=[1 2 5 8 9]
stratifiedKFolds = StratifiedKFold(n_splits=2, shuffle=True,random_state=776)
每次的分组都一样:
val_index_ls=[1 3 5 6 7]、val_index_ls=[0 2 4 8 9]
val_index_ls=[1 3 5 6 7]、val_index_ls=[0 2 4 8 9]
如果不设置random_state的话,则每次构建的模型是不同的。
每次生成的数据集是不同的,每次拆分出的训练集、测试集是不同的,所以根据需求而定。
kfold和StratifiedKFold 用法相关推荐
- sklearn可视化不同数据划分方法的差异:KFold, ShuffleSplit,StratifiedKFold, GroupKFold, StratifiedShuffleSplit.......
sklearn可视化不同数据划分方法的差异:TimeSeriesSplit, KFold, ShuffleSplit,StratifiedKFold, GroupShuffleSplit,GroupK ...
- KFold与StratifiedKFold
最近使用到了skearn做数据集的处理,记录一下这两个个比较重要的函数:KFold与StratifiedKFold,作用是在机器学习中进行交叉验证来使用 这两个函数都是sklearn模块中的,在应用之 ...
- Python中的KFold与StratifiedKFold
skearn做数据集的处理需要用到这两个比较重要的函数:KFold与StratifiedKFold,作用是在机器学习中进行交叉验证来使用. 这两个函数都是sklearn模块中的,在应用之前应该导入: ...
- KFold、StratifiedKFold、GroupKFold的区别
一.问题来源: 在kaggle代码中第一次看到GroupKFold,不太清楚和KFold的区别,所以才想着去搞清楚这个问题 二.KFold >>> import numpy as n ...
- sklearn sklearn中KFold()的具体用法
sklearn sklearn中KFold()的具体用法
- StratifiedKFold 用法
StratifiedKFold 将X_train和 X_test 做有放回抽样,随机分三次,取出索引 import numpy as np from sklearn.model_selection i ...
- StratifiedKFold和KFold(5折验证)交叉验证的联系和区别Python实例
Kfold: 将全部训练集分成k个不相交的子集,假设训练集的训练样例个数为m,那么每一个子集有m/k个训练样例,比如[1,2,3,4,5,6]分成两份,则第一份可能为[1,3,5],第二份[2,4,6 ...
- StratifiedKFold 和 KFold 的比较
将全部训练集S分成k个不相交的子集,假设S中的训练样例个数为m,那么每一个自己有m/k个训练样例,相应的子集为{s1,s2,...,sk} 每次从分好的子集里面,拿出一个作为测试集,其他k-1个作为训 ...
- K折交叉验证(StratifiedKFold与KFold比较)
文章目录 一.交叉验证 二.K折交叉验证 KFold()方法 StratifiedKFold()方法 一.交叉验证 交叉验证的基本思想是把在某种意义下将原始数据(dataset)进行分组,一部分做为训 ...
最新文章
- nginx源代码执行过程(一)
- arm汇编指令:ldr和adr的区别
- 多线程相互排斥--mutex(二)
- Python爬取京东笔记本电脑,来看看那个牌子最棒
- linux中export与source的作用
- 词汇的理解 —— 英译汉
- 【初赛】排列组合的一点笔记
- python 小程序搜索排名-用python2.7.9 写个小程序搜索某个目录下行有某关键字
- HTML5本地存储——IndexedDB二:索引
- 190303每日一句
- Win11 Windows聚焦不更新了怎么解决?聚焦锁屏图片不更换怎么办
- Matlab画图技巧: 不需要敲代码的傻瓜式操作流程
- Android 子线程更新UI
- educoder——面向对象程序设计java——实验实训——实验二 - 面向对象
- 小记2--MySQL数据库DML操作
- 自学Java必备英语单词表
- 光纤跳线的分类和概述
- 二进制部署kubernetes 1.25.5(二)
- 理发师多线程实现----面包师多进程实现
- 51单片机——电脑通过串口控制LED