目录

交叉验证原理

交叉验证分类

1.标准交叉验证(s折交叉验证)

代码实现

2.分层交叉验证

代码实现

StratifiedKFold参数

3.留一法交叉验证

代码实现

代码说明


交叉验证原理

交叉验证就是重复的使用数据,把得到的样本数据进行切分,组合为不同的训练集和测试集,用训练集来训练模型,用测试集来评估模型预测的好坏。

交叉验证分类

1.标准交叉验证(s折交叉验证)

s折交叉验证就是将数据集分为大小相等的s份,每次随机选取s-1份作为训练集,剩下的一份为测试集。当一轮完成后,再随机选取s-1份作为训练集,若干轮(小于S)之后,选择损失函数评估最优的模型和参数。

优点:

1.整个数据集可用于训练和验证

缺点:

1.不适合不平衡的数据集(出现图一的情况)

图一:标准交叉验证;

图二:分折交叉验证;

代码实现

from sklearn.model_selection import cross_val_score
score = cross_val_score(model,X, y, cv=5) #进行5轮交叉验证

2.分层交叉验证

根据原始类别比例分割数据集,训练集和测试集中各类别的比例与数据集中各类别的比例相同。

见图二的原理

代码实现

#分折交叉验证,会按照原始类别比例分割数据集
from sklearn.model_selection import StratifiedKFold
strKFold = StratifiedKFold(n_splits=5,shuffle=True,random_state=0)
score = cross_val_score(knn_clf,X, y,cv=strKFold)

StratifiedKFold参数

n_splits:折叠次数,默认为3,至少为2。

shuffle:是否在每次分割之前打乱顺序。

random_state:随机种子,在shuffle==True时使用,默认使用np.random。

StratifiedKFold用法类似Kfold,但是他是分层采样,确保训练集,测试集中各类别样本的比例与原始数据集中相同。

3.留一法交叉验证

对于N个样本,每次选择N-1个样本来训练数据,留一个样本来验证模型预测的好坏。(往往在数据量非常少的时候使用)

优点:

1.每一回合中几乎所有的样本皆用于训练模型,因此最接近原始样本的分布,这样评估所得的结果比较可靠;

2.实验没有随机因素,整个过程是可重复的;

缺点:

1.计算成本高;

代码实现

#留一法交叉验证
from sklearn.model_selection import LeaveOneOutloout = LeaveOneOut()
score = cross_val_score(knn_clf,X, y,cv=loout)

LeaveOneOut()进行留一交叉验证。

代码说明

from sklearn.model_selection import cross_val_score
cross_val_score(estimator, X, y=None,groups=None, scoring=None,cv=None, verbose=0, fit_params=None,pre_dispatch='2*n_jobs')

estimator:选用的学习器的实例对象,包含“fit”方法;
X :特征数组
y : 标签数组
groups:如果数据需要分组采样的话
scoring :评价函数
cv:交叉验证的k值,当输入为整数或者是None,估计器是分类器,y是二分类或者多分类,采用StratifiedKFold 进行数据划分
fit_params:字典,将估计器中fit方法的参数通过字典传递

转载自:

https://blog.csdn.net/weixin_42399856/article/details/81082971

交叉验证(s折、分层、留一法)相关推荐

  1. 5折交叉验证_[Machine Learning] 模型评估——交叉验证/K折交叉验证

    首先区分两个概念:'模型评估' 与 '模型性能度量' 模型评估:这里强调的是如何划分和利用数据,对模型学习能力的评估,重点在数据的划分方法. Keywords: 划分.利用数据 模型性能度量:是在研究 ...

  2. 五折交叉验证/K折交叉验证, python代码到底怎么写

    五折交叉验证: 把数据平均分成5等份,每次实验拿一份做测试,其余用做训练.实验5次求平均值.如上图,第一次实验拿第一份做测试集,其余作为训练集.第二次实验拿第二份做测试集,其余做训练集.依此类推~ 但 ...

  3. 统计学习导论(ISLR)(五):重采样方法(交叉验证和bootstrap)

    统计学习导论(ISLR) 小编大四统计在读,目前保研到统计学top3高校继续攻读统计研究生. 参考资料: The Elements of Statistical Learning An Introdu ...

  4. 交叉验证方法汇总【附代码】(留一法、K折交叉验证、分层交叉验证、对抗验证、时间序列交叉验证)

    目录 交叉验证是什么? 留一验证(LOOCV,Leave one out cross validation ) LOOCC代码 验证集方法 验证集方法代码 K折交叉验证(k-fold cross va ...

  5. 周志华《机器学习》课后习题3.410折交叉验证法和留一法UCI实例比较

    3.4选择两个UCI数据集,比较10折交叉验证法和留一法所估计出的对率回归的错误率. 利用SciKitLearn做十折交叉验证和留一法筛选 本文选用UCI提供的鸢尾花数据集和红酒产地数据集. Iris ...

  6. k折交叉验证matlab 流程_第51集 python机器学习:分层K折交叉验证及其他方式

    由于出现类似鸢尾花数据集这种分段数据可能简单的交叉验证无法适用,所以这里引用了分层K折交叉验证.在分层交叉验证中,我们划分数据,使得每个折中类别之间的比例整数与数据集中的比例相同,如下图所示: mgl ...

  7. python实现留一法_数据分割:留出法train_test_split、留一法LeaveOneOut、GridSearchCV(交叉验证法+网格搜索)、自助法...

    1.10 交叉验证,网格搜索 学习目标 目标 知道交叉验证.网格搜索的概念 会使用交叉验证.网格搜索优化训练模型 1 什么是交叉验证(cross validation) 交叉验证:将拿到的训练数据,分 ...

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

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

  9. matlab-K折交叉验证与分层K折交叉验证

    文章目录 K折交叉验证有什么用? 如何实现K折交叉验证? K折交叉验证的要点:(文字版) 如何实现K折交叉验证(图片版) 如何实现K折交叉验证(matlab版) 为啥我们需要分层K折交叉验证? 如何实 ...

  10. 回归预测 | MATLAB实现SVR(支持向量机回归)K折交叉验证

    回归预测 | MATLAB实现SVR(支持向量机回归)K折交叉验证 目录 回归预测 | MATLAB实现SVR(支持向量机回归)K折交叉验证 基本介绍 划分原理 留一划分 交叉验证 K折交叉 程序设计 ...

最新文章

  1. tomcat重启后session没有清除的解决办法
  2. iis worker process cpu 高_egg中的master、worker和agent
  3. 实现超长焦梦想的捷径——试用适马150-500毫米F5-6.3 OS镜头
  4. php dir opendir,php opendir()列出目录下文件的方法代码
  5. 动态切换站点样式(换皮肤)
  6. 实际用户ID,有效用户ID与保存设置用户ID
  7. Opengl-光照-基本光照-投光物-多光源(现实世界的光可不只有太阳也并不只有一个)
  8. jupyter notebook使用opencv的例子_Python安装Jupyter Notebook配置使用教程
  9. EasyUI,二级页面内容的操作
  10. IE、FF脚本兼容性问题
  11. python中+和join()的区别
  12. java spring 加载bean,Spring多种加载Bean方式解析
  13. 创建用户赋权限_JMeter接口测试实战之「创建用户」篇
  14. AS3 键盘的事件与实现
  15. CSS的position属性
  16. 日本将推出“隐形列车”,你要去体验一番吗?
  17. prthon日期型、字符串、数值、时间戳相互转换
  18. docker java 内存占用,jvm 在docker中内存占用问题探索 | Truman's Blog
  19. 云编译DSM引导(学习记录)
  20. JAVA 与 JVM

热门文章

  1. 免费网站数据抓取插件,可视化页面数据抓取插件
  2. 【报告分享】衣物护理生活小电器—消毒、干衣需求创新报告-TMIC消费者洞察(附下载)
  3. php开发框架_适用于开发人员的10个PHP框架-最佳
  4. 【Vue开发实战课后题】子组件为何不可以修改父组件传递的props?
  5. 瑞德西韦成为首个获美国FDA批准新冠药物;蚂蚁集团与马来西亚最大货币服务运营商之一建立合作伙伴关系 | 美通企业日报...
  6. 完全解读 OpenPyXL 设置 Excel 单元格样式
  7. Aspose.Words实用教程:如何处理文档分段——Aspose.Words中的分段
  8. PAT 1063 计算谱半径
  9. 完整版:交换机工作过程和原理
  10. 2018东南亚区块链创新峰会隆重召开,ETBOX团队获得高度认可