StratifiedShuffleSplit实现分层抽样交叉验证
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_train
和y_train
的数据进行切分,得到train_idx
和test_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实现分层抽样交叉验证相关推荐
- 机器学习(一) 基于sklearn库的数据集划分(交叉验证)
机器学习中首要环节就是数据集的处理,其中数据集的处理从个人理解(如有错误敬请谅解)的角度来说包括两个方面:数据集划分和数据清理.其中数据集划分是指训练集.验证集和测试集的数据类别划分:数据清理是指数据 ...
- StratifiedShuffleSplit 交叉验证
python中数据集划分函数StratifiedShuffleSplit的使用 文章开始先讲下交叉验证,这个概念同样适用于这个划分函数 1.交叉验证(Cross-validation) 交叉验证是指在 ...
- ML:基于葡萄牙银行机构营销活动数据集(年龄/职业等)利用Pipeline框架(两种类型特征并行处理)+多种模型预测(分层抽样+调参交叉验证评估+网格/随机搜索+推理)客户是否购买该银行的产品二分类案
ML之pipeline:基于葡萄牙银行机构营销活动数据集(年龄/职业/婚姻/违约等)利用Pipeline框架(两种类型特征并行处理)+多种模型预测(分层抽样+调参交叉验证评估+网格搜索/随机搜索+模型 ...
- 机器学习中的交叉验证
总第100篇 本篇讲讲机器学习中的交叉验证问题,并利用sklearn实现. 前言 在说交叉验证以前,我们先想一下我们在搭建模型时的关于数据切分的常规做法[直接利用train_test_split把所有 ...
- 5折交叉验证_数据集的划分——交叉验证法
本文作者:王 歌 文字编辑:戴 雯 技术总编:张 邯 前面我们在举例时,通常是将所使用的数据集按照75%和25%的比例划分为训练集和测试集,这主要是为了我们举例方便,同时划分后的数据量也依然符合大样本 ...
- python机器学习库sklearn——交叉验证(K折、留一、留p、随机)
分享一个朋友的人工智能教程.零基础!通俗易懂!风趣幽默!还带黄段子!大家可以看看是否对自己有帮助:点击打开 全栈工程师开发手册 (作者:栾鹏) python数据挖掘系列教程 学习预测函数的参数,并在相 ...
- 十折交叉验证pythoniris_数据集的划分——交叉验证法
本文作者:王 歌 文字编辑:戴 雯 技术总编:张 邯Python云端培训课程火热招生中~重大通知!!!爬虫俱乐部于2020年7月11日至14日在线上举行为期四天的Stata编程技术定制培训,招生工作已 ...
- K折交叉验证(StratifiedKFold与KFold比较)
文章目录 一.交叉验证 二.K折交叉验证 KFold()方法 StratifiedKFold()方法 一.交叉验证 交叉验证的基本思想是把在某种意义下将原始数据(dataset)进行分组,一部分做为训 ...
- k折交叉验证法python实现_Jason Brownlee专栏| 如何解决不平衡分类的k折交叉验证-不平衡分类系列教程(十)...
作者:Jason Brownlee 编译:Florence Wong – AICUG 本文系AICUG翻译原创,如需转载请联系(微信号:834436689)以获得授权 在对不可见示例进行预测时,模型评 ...
最新文章
- Mysql列类型-数值型
- java io流顶层_Java中的IO流(一)
- 选择问题(求第k个最小元素)
- linux下DHCP的安装配置
- Arcgis自动编号实现
- discuz 环境安装
- 隔行变色( 表格隔行变色 + LI 浮动隔行变色 )
- 计算机考研专业课只考一科的学校汇总
- 机器人 李永禄_第八届中国青少年机器人竞赛名单
- 证书服务器搭建与邮件签名加密
- 实习之路0--设计模式之策略模式的理解(鸭子类例子)
- android内存扩展格式,一文看懂:如何为你的安卓手机选择合适的存储卡
- 在华清远见培训的感受(实习总结)
- Sql Server身份验证登录配置
- 在Follow5 开围脖了
- 谁说啤酒不能做互联网?啤酒市场的春天来了,加速版商业模式分享——加速版乐分享商业模式加积分释放双驱动
- 施工机械折旧费计算机,施工机械闲置期间折旧费确定方法的探讨.pdf
- 宜春学院数学与计算机科学学院,欢迎报考宜春学院数学与计算机科学(服务外包)学院...
- USB3.0转SATA2.0(硬盘盒设计)
- 第十八届“华为杯”数模LaTeX模板送你!附官方优秀论文下载