[机器学习]KFold 和 StratifiedKFold

[sklearn] KFold与StratifiedKFold用法 1. 概览 KFold和StratifiedKFold的作用都是用于配合交叉验证的需求,将数据分割成训练集和测试集。 2. 区别 KFold随机分割数据,不会考虑数据的分布情况。 StratifiedKFold会根据原始数据的分布情况,分割出同分布的数据。 3. 实验 3.1 代码 from sklearn.model_selection import KFold from sklearn.model_selection import StratifiedKFold import numpy as np 阅读详情

首先这是从一个错误引出来的:

ValueError                                Traceback (most recent call last)
<ipython-input-42-2ab744268d80> in <module>()
     20 print('---------分割线--------------')
     21 sfolder = StratifiedKFold(n_splits=4,random_state=0,shuffle=False)
---> 22 for train, test in sfolder.split(X,y):
     23     print('Train: %s | test: %s' % (train, test))
     24     print(" ")

C:\ProgramData\Anaconda3\lib\site-packages\sklearn\model_selection\_split.py in split(self, X, y, groups)
    330                                                              n_samples))
    331 
--> 332         for train, test in super(_BaseKFold, self).split(X, y, groups):
    333             yield train, test
    334 

C:\ProgramData\Anaconda3\lib\site-packages\sklearn\model_selection\_split.py in split(self, X, y, groups)
     93         X, y, groups = indexable(X, y, groups)
     94         indices = np.arange(_num_samples(X))
---> 95         for test_index in self._iter_test_masks(X, y, groups):
     96             train_index = indices[np.logical_not(test_index)]
     97             test_index = indices[test_index]

C:\ProgramData\Anaconda3\lib\site-packages\sklearn\model_selection\_split.py in _iter_test_masks(self, X, y, groups)
    632 
    633     def _iter_test_masks(self, X, y=None, groups=None):
--> 634         test_folds = self._make_test_folds(X, y)
    635         for i in range(self.n_splits):
    636             yield test_folds == i

C:\ProgramData\Anaconda3\lib\site-packages\sklearn\model_selection\_split.py in _make_test_folds(self, X, y)
    587             raise ValueError(
    588                 'Supported target types are: {}. Got {!r} instead.'.format(
--> 589                     allowed_target_types, type_of_target_y))
    590 
    591         y = column_or_1d(y)

ValueError: Supported target types are: ('binary', 'multiclass'). Got 'continuous' instead.

这个坑了我3个小时。
标签是整数或者小数,真的能影响分割是否成功!!!

from sklearn.model_selection import KFold,StratifiedKFold
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,4]) # 整数
floder = KFold(n_splits=4,random_state=0,shuffle=False)
for train, test in floder.split(X,y):
    print('Train: %s | test: %s' % (train, test))
    print(" ")
print('---------分割线--------------')
sfolder = StratifiedKFold(n_splits=4,random_state=0,shuffle=False)
for train, test in sfolder.split(X,y):
    print('Train: %s | test: %s' % (train, test))
    print(" ")

输出为:

Train: [2 3 4 5 6 7] | test: [0 1]
Train: [0 1 4 5 6 7] | test: [2 3]
Train: [0 1 2 3 6 7] | test: [4 5]
Train: [0 1 2 3 4 5] | test: [6 7]
---------分割线--------------
Train: [1 3 4 5 6] | test: [0 2 7]
Train: [0 2 4 5 6 7] | test: [1 3]
Train: [0 1 2 3 5 7] | test: [4 6]
Train: [0 1 2 3 4 6 7] | test: [5]

标签是整数,两者均可成功分割
如果标签是小数,后者就无法工作了,坑爹的回归

由上面的例子也能够看出,两者的真正不同之处在于:KFold是均分,保证每次训练集和测试集是相同的占比

5. KFold, StratifiedKFold,StratifiedShuffleSplit, GroupKFold区别以及Stratified Group KFold 阅读详情

相关推荐

【sklearn】KFold、StratifiedKFold、GroupKFold的区别

文章目录1、KFold2、StratifiedKFold3、GroupKFold参考文献 平时使用或者数据竞赛中经常出现这几种交叉验证方式,那么他们的区别呢? [1]中给出了很多不同交叉验证的区别,本文就主要讲KFold、StratifiedKFold、GroupKFold的区别 1、KFold >>> import numpy as np >>> from sklearn.model_selection import KFold >>> X = ["

qq_16761099的博客 6618

pip安装iterstrat.ml_stratifiers import MultilabelStratifiedKFold, MultilabelStratifiedShuffleSplit

安装方法 pip install iterative-stratification 开源源码 介绍 MultilabelStratifiedKFold是用于多标签多分类的K折交叉验证 from iterstrat.ml_stratifiers import MultilabelStratifiedKFold, MultilabelStratifiedShuffleSplit # 5折 nfold = 5 kf = MultilabelStratifiedKFold(n_splits=nfold, shuf

BetterBench的博客 4274

sklearn的KFold,GroupKFold,StratifiedKFold区分

机器学习模型训练中对数据进行K折交叉训练是一个常见的策略,其中sklean库中的KFold,GroupKFold,StratifiedKFold就是实现对数据集K折划分的方法,这三个方法的区别总结如下。 KFold:是对数据集顺序按顺序K折划分; GroupKFold:是按训练者自己的需求进行的自定义划分,比如定义需要某些类别在训练集上多点数据; StratifiedKFold:则是分层采样,确保训练集,验证集中各类别样本的比例与原始数据集中相同; 这三种方法简单的代码示例: import nu

Briwisdom的博客 3584

OCTA数据集的交叉验证划分为训练集和测试机

OCTA数据集的交叉验证划分为训练集和测试机

xiashaoyan1的专栏 711

KFold,StratifiedKFold,cross_val_score用法

一 、KFold和StratifiedKFold KFold: KFold交叉采样:将训练/测试数据集划分n_splits个互斥子集,每次只用其中一个子集当做测试集, 剩下的(n_splits-1)作为训练集,进行n_splits次实验并得到n_splits个结果。 注:对于不能均等分的数据集,前n_samples%n_spllits子集拥有n_samples//n_spllits+1个样本, 其余子集都只有n_samples//n_spllits个样本。(例10行数据分3份,只有一份可分4行,其他均为3行

zyoulanxin的博客 1993

迭代分层:scikit-learn交叉验证器,用于多标签数据的迭代分层

迭代分层 迭代分层是一个为兼容的交叉验证器提供分层的项目,用于对多标签数据进行分层。 目前,scikit-learn为多个交叉验证器提供了分层。 但是,这些交叉验证器无法对多标签数据进行分层。 此迭代分层项目提供了MultilabelStratifiedKFold,MultilabelRepeatedStratifiedKFold和MultilabelStratifiedShuffleSplit的实现,并具有用于对多标签数据进行分层的基本算法,如下文所述: Sechidis K.,Tsoumakas G.,Vlahavas I.(2011)关于多标签数据的分层。 在:Gunopulos D

DW二手车Task01&02赛题理解EDA

X-mind 赛题理解 Comparison of KFold vs. GroupKFold vs. MultilabelStratifiedKFold 评估指标 平均绝对误差(Mean Absolute Error,MAE),均方误差(Mean Squared Error,MSE),平均绝对百分 误差(Mean Absolute Percentage Error,MAPE),均方根误差(...

elsieyin的博客 651

25届电信保研经验贴(空天院)

学校:中九专业:电子信息工程加权:92.89绩点:3.91/4.0rank:前五学期rank2/95,综合排名rank1(前六学期和综合排名出的晚,实际上只用到了前五学期)科研竞赛:市级大创、数模省一、数竞省二,其他校奖若干英语:六级462、四级548个人感觉:rank=科研>竞赛>英语总之rank和科研必须得有一项,要么就rank高,很多强com院校入营看rank。我rank比较有优势,因此报的多是强com院校。要么就科研经历丰富,多主动联系老师,特别是弱com院校。冬令营:空天院。

qq_68608661的博客 6344

StratifiedKFold(分类)和Kfold(回归)的区别

一、 StratifiedKFlod与KFlod主要区别 StratifiedKFlod:分层采样,训练集与测试集中各类别样本的比列与原始数据中相同;(分类问题) KFlod:分层采样,将数据分成训练集和测试集,不考虑训练集与测试集中各类别数据是否相同;(回归问题) from sklearn.model_selection import KFold,StratifiedKFold KFold(n_split, shuffle, random_state) 参数: n_splits:表示将数据划分几等份 s

A496608119的博客 3411

petalinux i2c的配置

1.硬件平台配置 1.内核配置 cd petalinux-config -c kernel -> Device Drivers -> I2C support -> i2C Hardware Bus support -> Xilinx I2C Controller Pressing 启用CONFIG_I2C_XILINX=y 2.修改用户设备树 cd cd project-spec/meta-user/recipes-bsp/device-tree/files/ i2c2:

u013403954的博客 4313

AvFrame和AvPacket

在FFmpeg中,未压缩的图像和压缩的视频码流分别使用AVFrame结构和AVPacket结构保存;针对视频编码器,其流程为从数据源获取图像格式的输入数据,保存为AVFrame对象并传入编码器,从编码器输出AVPacket结构。

Lce的专栏 3236

【机器学习】KFold,StratifiedKFold k折交叉切分区别

StratifiedKFold用法类似Kfold,但是他是分层采样,确保训练集,测试集中各类别样本的比例与原始数据集中相同。 例子: import numpy as np from sklearn.model_selection import KFold,StratifiedKFold X=np.array([ [1,2,3,4], [11,12,13,14], [21...

小苏打的学习博客 1206

uniapp - 鸿蒙真机运行报错hvigor ERROR: Failed :entry:default@CompileArkTS...,hvigor ERROR: default@CompileAr

uniapp鸿蒙报错> hvigor ERROR: Failed :entry:default@CompileArkTS... hvigor ERROR: default@CompileArkTS watch work[0] failed. 【HarmonyOS】工程编译后报错hvigor ERROR: Failed :entry:default@CompileArkTS,uniAPP鸿蒙开发无法编译运行启动报错,工程编译后报错,运行不起来,删除掉项目entry下的build和.preview缓存文件后重新

🏆 前端领域优质创作者 4792

sklearn kfold_sklearn交叉验证(KFold)的几个变种

本文为大家详细分析机器学习比赛里交叉验证的几个高阶用法,如果能熟练使用kfold的几个变种用来切分训练集和测试集,在很多比赛中会有惊人的上分效果。基于kfold主要有三个交叉验证的方法:1. KFold 2. StratifiedKFold 3. GroupKFold 下面我们用实际的例子和代码来详细解释每个方法的具体用法,并最后提炼出三个方法之间的本质区别和联系:首先是从sklearn把三种方法...

weixin_39751871的博客 867

13、使用 Mathematica 撰写文本

本文详细介绍了如何使用 Mathematica 进行文本撰写与处理。内容涵盖文本输入、格式设置、结构化排版、超链接插入、翻译与拼写检查工具的使用,以及将笔记本导出为多种格式(如 PDF、HTML、LATEX 和 RTF)的方法。通过实例演示了创建专业文档的完整流程,包括样式设置、公式推导、标题编号、页眉页脚配置等操作。适合希望利用 Mathematica 编写学术论文、技术报告或教学资料的用户参考。

sony5的博客 208

[关系图谱] 二.Gephi导入共线矩阵构建作者关系图谱

本文主要讲解Gephi绘制作者间的关系图谱,该软件可以广泛应用于社交网络、知识图谱分析,推荐读者使用。这是非常基础的一篇文章,重点讲解Gephi使用方法,希望对大家有所帮助。

杨秀璋的专栏 1万+

sklearn kfold_python sklearn中KFold与StratifiedKFold

在机器学习中经常会用到交叉验证,常用的就是KFold和StratifiedKFold,那么这两个函数有什么区别,应该怎么使用呢?首先这两个函数都是sklearn模块中的,在应用之前应该导入:from 首先说一下两者的区别,StratifiedKFold函数采用分层划分的方法(分层随机抽样思想),验证集中不同类别占比与原始样本的比例保持一致,故StratifiedKFold在做划分的时候需要传入标签...

weixin_39969953的博客 388

SA8295P QNX主机上电启动流程分析

嵌入式系统的启动过程对于确保系统正常运行至关重要。本文将详细分析SA8295P芯片在QNX主机上的上电启动流程,并提供相应的源代码示例。嵌入式系统的启动过程对于确保系统正常运行至关重要。本文将详细分析SA8295P芯片在QNX主机上的上电启动流程,并提供相应的源代码示例。以下是一个SA8295P QNX主机上电启动流程分析。

CodeMaven的博客 1231

KFold与StratifiedKFold的区别

KFold交叉采样:将训练/测试数据集划分n_splits个互斥子集,每次只用其中一个子集当做测试集,剩下的(n_splits-1)作为训练集,进行n_splits次实验并得到n_splits个结果。 sklearn.model_selection.KFold(n_splits=3,shuffle=False,random_state=None) n_splits:表示将数据划分几等份 shuffle:在每次划分时,是否进行洗牌 若为False,其效果相当于random_state为整数...

麦格芬230的博客 1219

Vue3 - H5实现省市区三四级联动组件,选择地址自定义省市区三级联动插件,弹框式多级联动选择器区域选择,vue3实现省市区三级联动地址选择组件(支持接口数据懒加载,样式精美漂亮,附带详细示例源码)

vue3实现省市区三级联动地址选择组件(附address文件),vue3实现省市区三级联动, 实现省、市、县地区三级联动功能,vue3省市区选择器,VUE3 h5如何实现省市区街道的四级联动选择,vue实现省市区选择联动,vue3城市三级联动(自定义组件)_VUE三级联动,插件省市区联动,vue如何实现省市区选择器,vue3怎样实现省市区地址三级联动,vue四级联动,vue3级联选择器,vue3实现选择省市区镇(街道)四级级联选择,包含三级级联选择,省市区街道三级四级联动选择器,VUE3自定义多列选择器省市

🏆 前端领域优质创作者 3069

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

KFold与StratifiedKFold

sklearn 中的KFold与StratifiedKFold函数的使用

ZhangJingHuaJYO的博客 2495

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Python中的KFold与StratifiedKFold

KFold与StratifiedKFold

weixin_48697962的博客 1792

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

kfold_sklearn交叉验证(KFold)的几个变种

本文为大家详细分析机器学习比赛里交叉验证的几个高阶用法,如果能熟练使用kfold的几个变种用来切分训练集和测试集,在很多比赛中会有惊人的上分效果。基于kfold主要有三个交叉验证的方法:1. KFold 2. StratifiedKFold 3. GroupKFold 下面我们用实际的例子和代码来详细解释每个方法的具体用法,并最后提炼出三个方法之间的本质区别和联系:首先是从sklearn把三种方法...

weixin_29237635的博客 2114

python交叉验证cnn_Python-sklearn包中StratifiedKFold和KFold生成交叉验证数据集的区别...

一、StratifiedKFold及KFold主要区别及函数参数KFold交叉采样:将训练/测试数据集划分n_splits个互斥子集,每次只用其中一个子集当做测试集,剩下的(n_splits-1)作为训练集,进行n_splits次实验并得到n_splits个结果。注:对于不能均等分的数据集,前n_samples%n_spllits子集拥有n_samples//n_spllits+1个样本,其余子集...

weixin_42303522的博客 815

别再只用train_test_split了!用sklearn的KFold和StratifiedKFold搞定模型验证(附完整代码)

本文深入探讨了如何利用sklearn的KFold和StratifiedKFold进行更可靠的模型验证,替代传统的train_test_split方法。通过K折交叉验证技术,可以有效解决类别不平衡和小样本数据带来的评估失真问题,提升模型性能的稳定性和可靠性。文章包含完整代码示例和实践技巧,适合机器学习开发者进阶学习。

weixin_28278377的博客 217

python sklearn中KFold与StratifiedKFold

仅用于记录学习,欢迎批评指正,大神勿喷 第1章:算法简介 –算法是一组完成任务的指令,任何代码片段都可视为算法。 二分查找 原理 二分查找的输入是一个有序的元素列表,如果要查找的元素包含在列表中,二分查找返回其位置,否则返回null。举例说明二分查找的原理:若有一串1-52的数,我们想要找到13这个数所在的位置,若我们盲猜,即每次猜测只能排除一个数,假设猜完除13之外的所有数后才猜到13,我们需要猜52次才能猜到13,这种查找方法被称为简单查找,也称为傻找。若我们用二分查找来猜数,每次猜的数为剩余总体数的一

m0_48005088的博客 410
上一篇: 【章华燕达人课】KNN不学习也可以预测
下一篇: 【剑指offer】把数组排成最小值
嘀嗒嘀嘀嗒嘀
博客等级 码龄9年 173粉丝 190原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值