K折交叉验证(StratifiedKFold与KFold比较)_四折交叉验证-程序员宅基地

技术标签: python  机器学习  机器学习100天  


一、交叉验证

交叉验证的基本思想是把在某种意义下将原始数据(dataset)进行分组,一部分做为训练集(train set),另一部分做为验证集(validation set or test set),首先用训练集对分类器进行训练,再利用验证集来测试训练得到的模型(model),以此来做为评价分类器的性能指标。–来自百科

二、K折交叉验证

KFold()方法

KFold(): KFold 将所有的样例划分为 k 个组,称为折叠 (fold) ,每组数据都具有相同的大小。每一次分割会将其中的 K-1 组作为训练数据,剩下的一组用作测试数据,一共会分割K次。

可以通过这张图直观的体现出来。(这是四折交叉验证,即K取4)
在这里插入图片描述
代码示例如下:

import numpy as np
from sklearn.model_selection import KFold
X=np.array([[1,2],[3,4],[5,6],[7,8],[9,10],[11,12]])
y=np.array([1,2,3,4,5,6])

kf=KFold(n_splits=4)    # 定义分成几个组

#for循环中的train_index与test_index是索引而并非我们的训练数据
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]

StratifiedKFold()方法

StratifiedKFold: 是KFold()的变种,采用分层分组的形式(有点类似分层抽样), 使每个分组中各类别的比例 同整体数据中各类别的比例尽可能的相同。(它相对于KFold()方法更完善)

代码示例如下:

import numpy as np
from sklearn.model_selection import StratifiedKFold
X=np.array([[1,2],[3,4],[5,6],[7,8],[9,10],[11,12]])
y=np.array([1,1,1,2,2,2])
skf=StratifiedKFold(n_splits=4)

#for循环中的train_index与test_index是索引而并非我们的训练数据
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]

【机器学习100天目录】
【机器学习第3天:预测汽车的燃油效率】
【机器学习第4天:预测1立方米混凝土抗压强度】
【机器学习第5天:逻辑回归】
【机器学习第6天:乳腺癌肿瘤预测】

如有错误欢迎指教,有问题的可以加入QQ群(1149530473)向我提问,关注微信公众号(明天依旧可好)和我同步学习。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_38251616/article/details/107974789

智能推荐

QT:pyqt删除layout中的控件,移除、添加、替换控件_pyqt5中,我用groupbox设置了一个layout,layout开始有个控件,后来我用remo-程序员宅基地

文章浏览阅读1.5w次,点赞5次,收藏36次。一个折磨了我好久好久的问题,终于得到解决,哈哈哈!百度了很久,都没有找到具体方法,最后突然试出来了首先,在不知道layout中控件的情况下,要删除所有的子控件,可采用以下方法:for i in range(verticalLayout_3.count()): print(verticalLayout_3.count()) verticalLayout_3.itemAt(i..._pyqt5中,我用groupbox设置了一个layout,layout开始有个控件,后来我用removewidget

NET中的三种Timer的区别和用法(转)_net timer-程序员宅基地

文章浏览阅读495次。 最近正好做一个WEB中定期执行的程序,而.NET中有3个不同的定时器。所以正好研究研究。这3个定时器分别是: //1.实现按用户定义的时间间隔引发事件的计时器。此计时器最宜用于 Windows 窗体应用程序中,并且必须在窗口中使用。 System.Windows.Forms.Timer // 2.提供以指定的时间间隔执行方法的机制。无法继承此类。 System.Threading.Timer //3_net timer

Linux系统硬盘挂载命令_linux磁盘挂载命令-程序员宅基地

文章浏览阅读2.3k次。6. 挂载网络共享目录(需要先安装samba客户端):mount -t cifs //192.168.1.2/share /mnt/share -o username=user,password=pass。7. 自动挂载命令(修改/etc/fstab文件):/dev/sda1 /mnt/data ext4 defaults 0 0。5. 挂载U盘命令(需要先插入U盘):mount /dev/sdb1 /mnt/usb。8. 强制卸载命令:umount -l /mnt/data。1. 挂载命令:mount。_linux磁盘挂载命令

python fpdf 中文加粗-程序员宅基地

文章浏览阅读585次。python fpdf中文加粗_python fpdf 中文

JedisPool的getResource()方法配置不当导致服务假死_jedispool.getresource()卡死-程序员宅基地

文章浏览阅读1.4w次。JedisPool的getResource()方法配置不当导致服务假死dubbo服务中使用jedis,在从JedisPool获取jedis时超时导致dubbo服务假死"DubboServerHandler-10.0.101.208:20880-thread-22" daemon prio=10 tid=0x00007f52f00b7800 nid=0x3d85 waiting on cond..._jedispool.getresource()卡死

WordPress安装简单详细教程(云服务器和轻量应用服务器搭建WordPress)_wordpress服务器部署教程-程序员宅基地

文章浏览阅读8.9k次,点赞4次,收藏61次。目录域名解析下面是WordPress网站具体搭建步骤:一、云服务器搭建wordpress二、轻量应用服务器搭建wordpress前言:不知道如何安装宝塔面板的朋友,可以先看下面的教程:1、轻量应用服务器安装宝塔面板(建站)2、云服务器安装宝塔面板(建站)3、阿里云服务器ECS搭建网站教程如何搭建一个wordpress网站呢?其实非常简单,你需要做的就是买一个域名和云服务器(或者轻量应用服务器)域名解析首先,进行域名解析,也就是将你的域名与服务器绑定_wordpress服务器部署教程

随便推点

也谈谈webview因为重定向而无法goBack的问题_webview重定向导致cangoback true-程序员宅基地

文章浏览阅读6.3k次。String str="http://www.baidu.com";Log.i("TAG","str="+str);webView.loadUrl(str);如以上的代码,你会发现会一直无法finish掉当前页面,这是为什么呢?经过调试,你会发现weBView.canGoBack一直为true,所以一直无法执行finish()的操作。再仔细一看,http://www._webview重定向导致cangoback true

python2.7 pip 版本升级后pip list 报错_please upgrade your python as python 2.7 is no lon-程序员宅基地

文章浏览阅读1.9k次。情景描述:我要使用python2.7 去安装个包,但是默认下载后安装的python中的pip版本是8.0.1的版本,需要升级。但是一升级过后,输入pip list 直接报错,只能卸载重装原因分析 : 是因为python放弃了2.7的版本,不支持了。只能安装21.0 版本之下的DEPRECATION: Python 2.7 reached the end of its life on January 1st,2020. Please upgrade your Python as Python 2.7_please upgrade your python as python 2.7 is no longer maintained

linux之通过挂载iso镜像去安装文件_mount 挂载 iso 后,把文件拷贝到别的目录能安装么-程序员宅基地

文章浏览阅读2.2w次,点赞3次,收藏28次。我们首先需要知道什么是DNS?  DNS全名是Domain Name System,翻译成中文就是域名系统,它主要的作用就是将人们容易记忆的域名和不方便记忆的ip地址做转换,比如,当我们访问百度的时候,我们知道www.baidu.com就可以直接访问,但是却不知道它的ip地址,DNS就是将我们不容易记忆的ip地址转换成域名的方式查看内核是否开启路由功能sysctl -a|grep..._mount 挂载 iso 后,把文件拷贝到别的目录能安装么

拜占庭容错的三个基本理论(CAP/FLP/DLS)_容错理论-程序员宅基地

文章浏览阅读2.2k次,点赞4次,收藏5次。拜占庭容错的三个基本理论1) CAP理论 - "如果网路发生阻断(partition)时,你只能选择资料的一致性(consistency)或可用性(availability),无法两者兼得"。论点比较真观:如果网路因阻断而分隔为二,在其中一边我送出一笔交易:"将我的十元给A";在另一半我送出另一笔交易:"将我的十元给B "。则此时系统要不是,a)无可用性,即这两笔交易至少会有一笔交易不会被接受..._容错理论

R语言中如何选择线性回归模型以及如何降维_r语言anova函数比较两个线性模型好坏-程序员宅基地

文章浏览阅读1w次,点赞2次,收藏26次。一、模型比较的二中方式(1)使用anova()函数比较二个模型fit1 Frost, data = states)fit2 anova(fit2, fit1)Model 1: Murder ~ Population + IlliteracyModel 2: Murder ~ Population + Illiteracy + Income + Frost _r语言anova函数比较两个线性模型好坏

CANoe中的离线回放+Trace回放_canoe数据回放-程序员宅基地

文章浏览阅读2.6k次,点赞28次,收藏42次。必须要说明的是,在实际工作中,有很多工程师将ReplayBlock当做一种报文回放功能使用。其实这是一种错误的用法。如果只想实现报文回放,有两种方式1:offline模式下,在Measurement配置窗口,使用数据回放功能。2:在trace窗口,使用import命令,也可直接导入数据文件,并显示在Trace窗口显示。如果文本很大,需要注意可能显示的数据会产生溢出和被覆盖。比较 1和2两种方式,建议在文件比较小的时候,直接在trace窗口添加。文件较大时使用offline模式下的数据回放。_canoe数据回放

推荐文章

热门文章

相关标签