StratifiedShuffleSplit()实现分层抽样交叉验证

1. K-折交叉验证法
  • 交叉验证通常采用K-折交叉验证法–将训练数据拆分成K份,用其中K-1份进行训练,剩下的一份进行预测,从而检测模型的数据泛化能力。
  • 使用cross_val_score可以实现交叉验证,但在某些场景下,为了解决不同类别的样本间数量差异较大的问题,可以引入sklearn.model_selection下的StratifiedShuffleSplit类进行分层抽样和测试数据的分割,从而提高模型的说服力。
2. StratifiedShuffleSplit的使用
(1) 创建StratifiedShuffleSplit对象
skfolds = StratifiedKFold(n_splits=3, random_state=25, shuffle=True)
  • n_split: 用于后续split方法中将将数据分成n_split份,其中测试数据占1份
  • random_state&shffle: 随机分割种子,若指定random_state,则需要设置shuffle为True。
(2) 数据切割
for train_idx, test_idx in skfolds.split(x_train, y_train):pass
  • split方法会对x_trainy_train的数据进行切分,得到train_idxtest_idx,即训练数据和测试数据的索引,其中len(train_idx) / len(test_idx) = n_split - 1。
  • split方法会根据y_train的类别进行分层抽样。
3. 实现分层抽样的交叉验证
cross_score_SKF = []
for train_idx, test_idx in skfolds.split(x_train, y_train):# print(len(train_idx) / len(test_idx))  # n_split - 1clone_clf = clone(RFClf)  # from sklearn.base import clone, 拷贝分类器# 通过索引选定训练数据集和测试数据集x_train_folds = x_train.iloc[train_idx]y_train_folds = y_train.iloc[train_idx]x_test_fold = x_train.iloc[test_idx]y_test_fold = y_train.iloc[test_idx]# 模型训练clone_clf.fit(x_train_folds, y_train_folds)y_pred_fold = clone_clf.predict(x_test_fold)# precision_score进行评分,也可以灵活地选择其它评分策略accuracy = precision_score(y_test_fold, y_pred_fold)cross_score_SKF.append(round(accuracy, 8))
print(cross_score_SKF)  # [0.94791667, 0.98378378, 0.97883598]
  • 本例中建立了一个随机森林的基础模型,用precision_score即精度作为策略进行评分。
  • 在使用StratifiedShuffleSplit实现交叉验证中,n_split参数可理解为cross_val_score()函数中的cv参数。
  • 最终交叉验证的精度均高于94%,可以说明模型具有较强的数据泛化能力。

StratifiedShuffleSplit实现分层抽样交叉验证相关推荐

  1. 机器学习(一) 基于sklearn库的数据集划分(交叉验证)

    机器学习中首要环节就是数据集的处理,其中数据集的处理从个人理解(如有错误敬请谅解)的角度来说包括两个方面:数据集划分和数据清理.其中数据集划分是指训练集.验证集和测试集的数据类别划分:数据清理是指数据 ...

  2. StratifiedShuffleSplit 交叉验证

    python中数据集划分函数StratifiedShuffleSplit的使用 文章开始先讲下交叉验证,这个概念同样适用于这个划分函数 1.交叉验证(Cross-validation) 交叉验证是指在 ...

  3. ML:基于葡萄牙银行机构营销活动数据集(年龄/职业等)利用Pipeline框架(两种类型特征并行处理)+多种模型预测(分层抽样+调参交叉验证评估+网格/随机搜索+推理)客户是否购买该银行的产品二分类案

    ML之pipeline:基于葡萄牙银行机构营销活动数据集(年龄/职业/婚姻/违约等)利用Pipeline框架(两种类型特征并行处理)+多种模型预测(分层抽样+调参交叉验证评估+网格搜索/随机搜索+模型 ...

  4. 机器学习中的交叉验证

    总第100篇 本篇讲讲机器学习中的交叉验证问题,并利用sklearn实现. 前言 在说交叉验证以前,我们先想一下我们在搭建模型时的关于数据切分的常规做法[直接利用train_test_split把所有 ...

  5. 5折交叉验证_数据集的划分——交叉验证法

    本文作者:王 歌 文字编辑:戴 雯 技术总编:张 邯 前面我们在举例时,通常是将所使用的数据集按照75%和25%的比例划分为训练集和测试集,这主要是为了我们举例方便,同时划分后的数据量也依然符合大样本 ...

  6. python机器学习库sklearn——交叉验证(K折、留一、留p、随机)

    分享一个朋友的人工智能教程.零基础!通俗易懂!风趣幽默!还带黄段子!大家可以看看是否对自己有帮助:点击打开 全栈工程师开发手册 (作者:栾鹏) python数据挖掘系列教程 学习预测函数的参数,并在相 ...

  7. 十折交叉验证pythoniris_数据集的划分——交叉验证法

    本文作者:王 歌 文字编辑:戴 雯 技术总编:张 邯Python云端培训课程火热招生中~重大通知!!!爬虫俱乐部于2020年7月11日至14日在线上举行为期四天的Stata编程技术定制培训,招生工作已 ...

  8. K折交叉验证(StratifiedKFold与KFold比较)

    文章目录 一.交叉验证 二.K折交叉验证 KFold()方法 StratifiedKFold()方法 一.交叉验证 交叉验证的基本思想是把在某种意义下将原始数据(dataset)进行分组,一部分做为训 ...

  9. k折交叉验证法python实现_Jason Brownlee专栏| 如何解决不平衡分类的k折交叉验证-不平衡分类系列教程(十)...

    作者:Jason Brownlee 编译:Florence Wong – AICUG 本文系AICUG翻译原创,如需转载请联系(微信号:834436689)以获得授权 在对不可见示例进行预测时,模型评 ...

最新文章

  1. Mysql列类型-数值型
  2. java io流顶层_Java中的IO流(一)
  3. 选择问题(求第k个最小元素)
  4. linux下DHCP的安装配置
  5. Arcgis自动编号实现
  6. discuz 环境安装
  7. 隔行变色( 表格隔行变色 + LI 浮动隔行变色 )
  8. 计算机考研专业课只考一科的学校汇总
  9. 机器人 李永禄_第八届中国青少年机器人竞赛名单
  10. 证书服务器搭建与邮件签名加密
  11. 实习之路0--设计模式之策略模式的理解(鸭子类例子)
  12. android内存扩展格式,一文看懂:如何为你的安卓手机选择合适的存储卡
  13. 在华清远见培训的感受(实习总结)
  14. Sql Server身份验证登录配置
  15. 在Follow5 开围脖了
  16. 谁说啤酒不能做互联网?啤酒市场的春天来了,加速版商业模式分享——加速版乐分享商业模式加积分释放双驱动
  17. 施工机械折旧费计算机,施工机械闲置期间折旧费确定方法的探讨.pdf
  18. 宜春学院数学与计算机科学学院,欢迎报考宜春学院数学与计算机科学(服务外包)学院...
  19. USB3.0转SATA2.0(硬盘盒设计)
  20. 第十八届“华为杯”数模LaTeX模板送你!附官方优秀论文下载

热门文章

  1. LVS原理详解(4种工作模式)
  2. 循环机换变速箱油教程_标致308循环机更换自动变速箱油图文教程
  3. 【六袆 - linux】docker 第二次运行容器;docker第二次运行mysql容器;docker第二次启动mysql;
  4. 使用 ChatGPT 启发游戏创意|基于 AI 5 天创建一个农场游戏,第 2 天
  5. 蓝桥杯国王的烦恼java,国王的烦恼 蓝桥杯
  6. #爬取豆瓣电影top250
  7. 【环境配置】配置jdk
  8. 【洛谷P2947】向右看齐
  9. 【附源码】计算机毕业设计java疫情期间优化旅游平台设计与实现
  10. Emlog最新文章采集插件