StratifiedKFold和KFold(5折验证)交叉验证的联系和区别Python实例
Kfold:
将全部训练集分成k个不相交的子集,假设训练集的训练样例个数为m,那么每一个子集有m/k个训练样例,比如[1,2,3,4,5,6]分成两份,则第一份可能为[1,3,5],第二份[2,4,6]。
每次从分好的子集里面,拿出一个作为测试集,其他k-1个作为训练集
在k-1个训练集上训练出学习器模型,把这个模型用测试集来验证,最后求得所有子集的分类率的平均值,作为该模型或者假设函数的真实分类率。
StratifiedKFold
StratifiedKFold用法类似Kfold,但是他是分层采样,确保训练集的预测结果(0,1)都占有,测试集中各类别样本的比例与原始数据集中相同。也就是正负例都含有。
例子:
import numpy as np
from sklearn.model_selection import StratifiedKFold,KFold
X=np.array([[1,2,3,4],[11,12,13,14],[21,22,23,24],[31,32,33,34],[41,42,43,44],[51,52,53,54],[61,62,63,64],[71,72,73,74]
])y=np.array([1,1,0,0,1,1,0,0])
#n_folds这个参数没有,引入的包不同,
floder = KFold(n_splits=4,random_state=0,shuffle=False)
sfolder = StratifiedKFold(n_splits=4,random_state=0,shuffle=False)for train, test in sfolder.split(X,y):print('StratifiedKFold Train index: %s | test: %s' % (train, test))print('X[train]:',X[train])print('y[train]:',y[train])print('X[test]:',X[test])print('y[test]:',y[test])print(" ")for train, test in floder.split(X,y):print('KFold Train index: %s | test index : %s' % (train, test))print('X[train]:', X[train])print('y[train]:', y[train])print('X[test]:', X[test])print('y[test]:', y[test])print(" ")
结果:
D:\ProgramFiles\Anaconda3\python.exe "D:/Python Project/Finance-Cup-Data-master/Data-Finance-Cup/luojiLearn/KfoldLearn.py"
StratifiedKFold Train: [1 3 4 5 6 7] | test: [0 2]
X[train]: [[11 12 13 14][31 32 33 34][41 42 43 44][51 52 53 54][61 62 63 64][71 72 73 74]]
y[train]: [1 0 1 1 0 0]
X[test]: [[ 1 2 3 4][21 22 23 24]]
y[test]: [1 0]StratifiedKFold Train: [0 2 4 5 6 7] | test: [1 3]
X[train]: [[ 1 2 3 4][21 22 23 24][41 42 43 44][51 52 53 54][61 62 63 64][71 72 73 74]]
y[train]: [1 0 1 1 0 0]
X[test]: [[11 12 13 14][31 32 33 34]]
y[test]: [1 0]StratifiedKFold Train: [0 1 2 3 5 7] | test: [4 6]
X[train]: [[ 1 2 3 4][11 12 13 14][21 22 23 24][31 32 33 34][51 52 53 54][71 72 73 74]]
y[train]: [1 1 0 0 1 0]
X[test]: [[41 42 43 44][61 62 63 64]]
y[test]: [1 0]StratifiedKFold Train: [0 1 2 3 4 6] | test: [5 7]
X[train]: [[ 1 2 3 4][11 12 13 14][21 22 23 24][31 32 33 34][41 42 43 44][61 62 63 64]]
y[train]: [1 1 0 0 1 0]
X[test]: [[51 52 53 54][71 72 73 74]]
y[test]: [1 0]KFold Train: [2 3 4 5 6 7] | test: [0 1]
X[train]: [[21 22 23 24][31 32 33 34][41 42 43 44][51 52 53 54][61 62 63 64][71 72 73 74]]
y[train]: [0 0 1 1 0 0]
X[test]: [[ 1 2 3 4][11 12 13 14]]
y[test]: [1 1]KFold Train: [0 1 4 5 6 7] | test: [2 3]
X[train]: [[ 1 2 3 4][11 12 13 14][41 42 43 44][51 52 53 54][61 62 63 64][71 72 73 74]]
y[train]: [1 1 1 1 0 0]
X[test]: [[21 22 23 24][31 32 33 34]]
y[test]: [0 0]KFold Train: [0 1 2 3 6 7] | test: [4 5]
X[train]: [[ 1 2 3 4][11 12 13 14][21 22 23 24][31 32 33 34][61 62 63 64][71 72 73 74]]
y[train]: [1 1 0 0 0 0]
X[test]: [[41 42 43 44][51 52 53 54]]
y[test]: [1 1]KFold Train: [0 1 2 3 4 5] | test: [6 7]
X[train]: [[ 1 2 3 4][11 12 13 14][21 22 23 24][31 32 33 34][41 42 43 44][51 52 53 54]]
y[train]: [1 1 0 0 1 1]
X[test]: [[61 62 63 64][71 72 73 74]]
y[test]: [0 0]
StratifiedKFold和KFold(5折验证)交叉验证的联系和区别Python实例相关推荐
- K折交叉验证(StratifiedKFold与KFold比较)
文章目录 一.交叉验证 二.K折交叉验证 KFold()方法 StratifiedKFold()方法 一.交叉验证 交叉验证的基本思想是把在某种意义下将原始数据(dataset)进行分组,一部分做为训 ...
- k折交叉验证 k-fold cross-validation
文章目录 k折交叉验证 k值的确定 实例 使用scikit-learn进行交叉验证 交叉验证是用来评估机器学习方法的有效性的统计学方法,可以使用有限的样本数量来评估模型对于验证集或测试集数据的效果. ...
- k折交叉验证法python实现_Jason Brownlee专栏| 如何解决不平衡分类的k折交叉验证-不平衡分类系列教程(十)...
作者:Jason Brownlee 编译:Florence Wong – AICUG 本文系AICUG翻译原创,如需转载请联系(微信号:834436689)以获得授权 在对不可见示例进行预测时,模型评 ...
- python机器学习库sklearn——交叉验证(K折、留一、留p、随机)
分享一个朋友的人工智能教程.零基础!通俗易懂!风趣幽默!还带黄段子!大家可以看看是否对自己有帮助:点击打开 全栈工程师开发手册 (作者:栾鹏) python数据挖掘系列教程 学习预测函数的参数,并在相 ...
- K折交叉验证和pipeline
KFold模块 from sklearn.model_selection import KFold 为什么要使用交叉验证?交叉验证的介绍 交叉验证是在机器学习建立模型和验证模型参数时常用的办法. 交叉 ...
- 5折交叉验证_数据集的划分——交叉验证法
本文作者:王 歌 文字编辑:戴 雯 技术总编:张 邯 前面我们在举例时,通常是将所使用的数据集按照75%和25%的比例划分为训练集和测试集,这主要是为了我们举例方便,同时划分后的数据量也依然符合大样本 ...
- python kfold交叉验证_KFold交叉验证
KFold模块 from sklearn.model_selection import KFold 为什么要使用交叉验证?交叉验证的介绍 交叉验证是在机器学习建立模型和验证模型参数时常用的办法. 交叉 ...
- matlab-K折交叉验证与分层K折交叉验证
文章目录 K折交叉验证有什么用? 如何实现K折交叉验证? K折交叉验证的要点:(文字版) 如何实现K折交叉验证(图片版) 如何实现K折交叉验证(matlab版) 为啥我们需要分层K折交叉验证? 如何实 ...
- 【Kaggle比赛常用trick】K折交叉验证、TTA
一.什么是k折交叉验证? 在训练阶段,我们一般不会使用全部的数据进行训练,而是采用交叉验证的方式来训练.交叉验证(Cross Validation,CV)是机器学习模型的重要环节之一.它可以增强随机性 ...
最新文章
- 如何才能建立起似然函数
- IBM发布Open Liberty 18.0.0.4,支持MicroProfile 2.1和反应性扩展框架
- not in SQL语句转化为 not exists
- SAP 电商云 Spartacus UI 支持延迟加载的新功能的入口设计
- EF Core 3.0查询
- 前端网页制作-javaScripe 初学笔记
- 图像处理OpenCV(2)——OpenCV基本操作之图像的基础操作
- DiskGenius 强行拆分黑苹果HFS硬盘分区以给Windows扩容
- 屌丝、小白怎么拿国内巨头offer
- APS高级计划排程系统和生产排产系统
- mysql清数据库并导入_mysql 数据库导入数据
- 本地计算机如何使用代理服务器,自动设置代理ip
- ERROR sqoop.Sqoop: Got exception running Sqoop: java.lang.NullPointerException 解决方案【SOLVED】
- 小猿日记 - 程序猿的日常日记(3)
- Flex——项目item的属性(order、flex-grow、flex-shrink、flex-basis、flex、align-self)
- 阿松嘚嘚嘚-数据库篇2-完美范式不完美
- 测绘资质对企业单位的作用和影响
- 【shell】shell 函数
- Java 驼峰命名转下划线命名(能正确处理连续HTTP等大写)
- 移动端布局之flex布局
热门文章
- mysql代表单个字符_mysql字符编码以及字符序
- 显示数量_SOLIDWORKS 标注螺纹不显示数量?Why
- rust大油田分解机_低渗油田油井反向调驱(堵水)技术:单井平均含水率从95.6%降至53.65%,单井平均日产油从0.115t上升至1.32t...
- Android开发之快捷键Google官方版本包含Mac版本
- Android开发编码规范pdf文件下载
- Ajax Get请求获取后台返回的数据
- git拉取分支报错:fatal:‘XXX' is not a commit and a branch ‘XXX' cannot be created from
- (二)流--递归算法
- MaxCompute(ODPS)上处理非结构化数据的Best Practice
- java实现在线浏览zip文件及文件下载