文章目录

  • 1. KFold
  • 2. StratifiedKFold
  • 3. generator
  • 4. 建模中的应用

1. KFold

首先要搞清楚,KFold是用于生成交叉验证的数据集的,而StratifiedKFold则是在KFold的基础上,加入了分层抽样的思想,使得测试集和训练集有相同的数据分布,因此表现在算法上,StratifiedKFold需要同时输入数据和标签,便于统一训练集和测试集的分布

  • 概念

    • 将数据K等分,依次选择其中一份作为测试集,其余k-1份作为训练集
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])from sklearn.model_selection import StratifiedKFold,KFold
kf=Kfold(n_splits=4)
kf.split(X) !注意这个地方

2. StratifiedKFold

基本代码和KFold相似。

(1) 首先创建一个对象

(2) 然后带入数据进行数据分割

(3) 读取分割后的数据,读取后每个变量形式表现为数组,整个分隔的函数.split得出的则是一个生成器

我主要卡在了不清楚

(1) 分隔时skf.split(X,y)的输出到底是个什么东西,
(2) 为什么可以用for循环去读取。

于是查了些资料发现是自己对生成器的了解不够

sfolder = StratifiedKFold(n_splits=4,random_state=0)
for train, test in sfolder.split(X,y):print('Train: %s | test: %s' % (train, test))

3. generator

感谢python中的生成器(generator)总结

  • 首要印象
    python中的generator保存的是算法,不会输出结果,是一种惰性计算,即只有真正需要计算出值的时候才会往下计算

  • 生成generator
    (1) 将生成列表的[]改成()

    (2) 在函数中使用yield关键字。
    函数里有了yield之后,每次执行到yield就会停止,下一次直接从停止的地方继续计算。因此即使生成器是无限循环也没有关系,因为生成器本身并不计算结果,只是保存算法。

#(1)将生成列表的[]改成()
t=(x for x in range(10))
t
输出:<generator object <genexpr> at 0x000001D6C12602E0>#(2) 在函数中使用yield关键字
def fib():a=[1,2]b=[3,4]while a[1]<100:yield a,ba=[i+7 for i in a]b=[i+1 for i in b]f = fib()
for i,j in f:print(i,j)
  • generator中的for循环
    对于generator可以采用next()方法进行逐条读取,但一般for循环更为常见

    通常采用for循环遍历一个generator,其实for循环的内部实现就是不停调用next()

  • 优点

    • (1) 生成器可以避免不必要的计算,带来性能上的提升
    • (2) 而且会节约空间,可以实现无限循环(无穷大的)的数据结构。

4. 建模中的应用

生成交叉验证数据集,其中skf.split(X,y)返回的是训练集和测试集的索引值

skf=StratifiedKFold(n_splits=3,random_state=1) for train_index,test_index in skf.split(X,y):X_train,X_test=X[train_index],X[test_index]y_train,y_test=y[train_index],y[test_index]

python中的StratifiedKFold相关推荐

  1. Python中的KFold与StratifiedKFold

    skearn做数据集的处理需要用到这两个比较重要的函数:KFold与StratifiedKFold,作用是在机器学习中进行交叉验证来使用. 这两个函数都是sklearn模块中的,在应用之前应该导入: ...

  2. 如何在 Python 中开始机器学习?(小白必看)

    其实学习机器学习的最好方法是设计和完成小项目. Python 是一种流行且功能强大的解释型语言.与 R 不同,Python 是一种完整的语言和平台,可用于研究和开发以及开发生产系统. 还有很多模块和库 ...

  3. [转载]Scikit Learn: 在python中机器学习

    原址:http://my.oschina.net/u/175377/blog/84420 目录[-] Scikit Learn: 在python中机器学习 载入示例数据 一个改变数据集大小的示例:数码 ...

  4. 如何优雅的在python中暂停死循环?

    死循环 有时候在工作中可能会遇到要一直执行某个功能的程序,这时候死循环就派上用途了,python中死循环的具体形式大致如下 while True:run_your_code() 结束死循环 通常我们结 ...

  5. 关于python中的dict和defaultdict

    dict 在Python中如果访问字典中不存在的键,会引发KeyError异常,所以一般当我们比如统计一句话的词频时候,我们总是使用这样的处理方式: strings = ('puppy', 'kitt ...

  6. python中的新式类与旧式类的一些基于descriptor的概念(上)

    python中基于descriptor的一些概念(上) 1. 前言 2. 新式类与经典类 2.1 内置的object对象 2.2 类的方法 2.2.1 静态方法 2.2.2 类方法 2.3 新式类(n ...

  7. Python中yield和yield from的用法

    yield 后面接的是 future 对象 调用方 委托生成器 yield from 直接给出循环后的结果 yield from 委托者和子生成器直接通信 yield from 直接处理stopIte ...

  8. Python中正则表达式用法 重点格式以这个为准_首看_各种问题

    20210811 https://www.jb51.net/article/101258.htm 一.惰性模式的概念: 此模式和贪婪模式恰好相反,它尽可能少的匹配字符以满足正则表达式即可,例如: va ...

  9. 逗号分隔的字符串转换为Python中的列表 split

    将逗号分隔的字符串转换为Python中的列表 给定一个字符串: 它是由逗号分隔的几个值的序列: mStr = '192.168.1.1,192.168.1.2,192.168.1.3' 如何将字符串转 ...

最新文章

  1. python编程语言能干什么-编程语言Python,可以用来干什么
  2. Java OR Android
  3. 转载【IDEA】向IntelliJ IDEA创建的项目导入Jar包的两种方式
  4. 探秘大型B2C网站如何实现高性能可伸缩架构技术
  5. ”盒模型“之如何防止边框和内边距把元素撑开
  6. 计算机网络基础:TCP/IP协议相关知识笔记​
  7. cad与连接mySQL数据库_跨服务器操作数据库?其实很简单!(下)
  8. 用electron写桌面应用
  9. Symfony 4.2.4 和 3.4.23 发布,经典 PHP Web 开发框架
  10. python文件、存储、压缩
  11. scp实现mac与linux服务器之间文件传输
  12. 无法在Web服务器上启动调试。您不具备调试此应用程序的权限,此项目的URL位于Internet区域。...
  13. 开源的shell工具finalShell
  14. 【Linux】Ubuntu18.04深度学习环境配置+Google+TIM+搜狗输入法等安装方法
  15. Python+Selenium程序执行完,chrome浏览器自动关闭解决方案
  16. HR面试问题总结(HR面经)
  17. ROS机器人的远程启动和控制过程
  18. python小白系列2
  19. Navicate管理工具的使用
  20. 简单理解什么是虚拟存储器

热门文章

  1. 既约分数(辗转相除法)蓝桥杯
  2. Cadence Allegro 17.4学习记录开始25-PCB Editor 17.4软件PCB中布线操作基础
  3. uniapp运行到IOS真机提示 错误:请查看是否设备未加入到证书列表或者确认证书类型是否匹配
  4. 「制作U盘系统」”安装 Linux Ubuntu系统到移动硬盘“教程
  5. 如何让火狐浏览器开启夜间模式
  6. 读书笔记:英语词根学习
  7. ElasticSearch——倒排索引和正向索引
  8. 04 Rabbits and Recurrence Relations
  9. jQuery 输入框的onblur事件
  10. 二次剪辑视频怎么做成原创,二次剪辑视频过原创免费教程