cross_val_score用来做交叉验证,里面的一个参数cv的选择比较悬疑,有时会用cv=n,有时又用cv=KFold(n_splits=n)。

查来查去,在《machine learning》终于找到了一个说法:

When an integer is passed to the cv parameter of cross_val_score():

  • StratifiedKFold is used if the estimator is a classifier and y is either binary or multiclass.
  • In all other cases, KFold is used.

啥意思?还是翻译一下:如果估计器是一个分类器,并且y是二进制或多类,则使用StratifiedKFold,如果是其他情况,就用KFold

这里的StratifiedKFold是啥?cv=StratifiedKFold(n_splits=5)其实就等价于cv=5

from sklearn import datasets
from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import cross_val_score, KFold, StratifiedKFolddata = datasets.load_breast_cancer()
x, y = data.data, data.targetprint(cross_val_score(DecisionTreeClassifier(random_state=1), x, y, cv=5))
print(cross_val_score(DecisionTreeClassifier(random_state=1), x, y, cv=KFold(n_splits=5)))
print(cross_val_score(DecisionTreeClassifier(random_state=1), x, y, cv=StratifiedKFold(n_splits=5)))

结果如上图,仔细看看会发现第一个和第三个的结果一模一样,这也证明了“cv=StratifiedKFold(n_splits=5)其实就等价于cv=5”

上面都是纸上谈兵,直接实操一下看看结果。

我在泰坦尼克预测案例中,用了随机森林来玩,估计器是分类器,并且Y是二进制值,按照上面的结论,这里应该用cv=3(或者cv=StratifiedKFold(n_splits=3))最合适。跑完结果发现,cv=3的结果确实优于cv=kf的结果

cross_val_score中cv=5与cv=KFold(n_splits=5)的区别相关推荐

  1. 交叉验证中cv=? 与 cv=KFold(n_splits=?)的区别

    这几天复习交叉验证的时候发现一个问题,学习资料中有些地方用的函数中cv=?,有些地方则用的cv=KFold(n_splits=?) 这个函数,就比如我用KNN模型做十折交叉验证: model = sk ...

  2. OpenCV中的「透视变换 / 投影变换 / 单应性」—cv.warpPerspective、cv.findHomography

    文章目录 引言 透视变换(projective transform) 单应性(Homography) opencv代码 仿射变换相关函数 投影变换相关的函数 鸟瞰图代码示例 小结 引言 图像的几何变换 ...

  3. opencv-python 中直线拟合函数cv.fitLine()的2D直线拟合(适合小白观看)

    在提取指静脉的过程中,我们需要提取有用的ROI区域.而这时候,我们会采取将手指两边中点拟合成一条直线,求得这个直线的直线方程,然后得到旋转的角度,以便对原来的图像进行旋转操作.当我们知道如何取得手指的 ...

  4. 【opencv】5.cv::findContours和cv::drawContours()

    原文链接:https://blog.csdn.net/guduruyu/article/details/69220296 可以通过查找轮廓,找出图像中的对象.这轮廓是由一系列点组成的,根据查找轮廓时的 ...

  5. 【OpenCV3】透视变换——cv::getPerspectiveTransform()与cv::warpPerspective()详解

    透视变换(Perspective Transformation)是将成像投影到一个新的视平面(Viewing Plane),也称作投影映射(Projective Mapping).如图1,通过透视变换 ...

  6. 【OpenCV3】图像通道分离与合并——cv::split()与cv::merge()详解

    在图像处理中,尤其是处理多通道图像时,有时需要对各个通道进行分离,分别处理:有时还需要对分离处理后的各个通道进行合并,重新合并成一个多通道的图像.opencv2和opencv3中实现图像通道的合并与分 ...

  7. 【OpenCV3】棋盘格角点检测与绘制——cv::findChessboardCorners()与cv::drawChessboardCorners()详解

    棋盘格法是摄像机标定中常用的一种方法,在使用该方法时需要对棋盘格的角点进行检测.opencv中封装了一个专门用于棋盘格角点检测的函数即cv::findChessboardCorners(),同时,也提 ...

  8. 【OpenCV3】角点检测——cv::goodFeaturesToTrack()与cv::cornerSubPix()详解

    一提到角点检测,最常用的方法莫过于Harris角点检测,opencv中也提供了Harris角点检测的接口,即cv::cornerHarris(),但是Harris角点检测存在很多缺陷(如角点是像素级别 ...

  9. 【OpenCV3】彩色映射——cv::applyColorMap()与cv::LUT()详解

    在图像处理的过程中,我们通常会遇到将灰度图像映射成彩色图像的情形(即通常所说的伪彩映射),OpenCV2和OpenCV3中均提供了两个用于伪彩映射的函数--cv::applyColorMap()和cv ...

最新文章

  1. 大话数据结构(十)java程序——队列
  2. LeetCode Search a 2D Matrix II
  3. docker搭建常见组件
  4. Python内置函数min(iterable, *[, key, default])
  5. About Site Definition Files
  6. C/C++函数学习(6)容器分类
  7. Python-OpenCV设置摄像头分辨率
  8. 计算机控制面板图标显示,Win8桌面如何有计算机/控制面板图标
  9. python自关联_django自关联,auth模块
  10. php判断是否为数字_PHP知识点:从'xulei' == 0是否为真谈谈运算符===和==
  11. mybatis中使用in查询时的注意事项
  12. HDU4552 怪盗基德的挑战书【文本处理】
  13. STM32 CANFD波特率计算器
  14. pikachu XXE (XML外部实体注入)(皮卡丘漏洞平台通关系列)
  15. 联想集团:2021/22财年第一季度业绩
  16. 寺庙公众号开发:vue实现祈福牌位的前端部分
  17. 2019计算机研究生暑期学校,2019年度VLDB暑期学校
  18. 移动收款功能(未完成,无参考价值)
  19. 基于WEB 的实时事件通知
  20. Mac iOS 模拟器录制屏幕生成Gif

热门文章

  1. 带你去吃江南排名第一好吃的包子:丁莲芳千张包子
  2. mount通过NFS挂载
  3. VSCode怎么换主题(有图 超详细)
  4. java jxl写excel_java读写Excel(JXL)
  5. p站高配虚拟专网怎么用?
  6. 写给我最爱的女孩的第一封信
  7. 269_长按加号减号快速加减
  8. 阿小冷学计算机(3)
  9. CSS/CSS3语法新特性笔记
  10. 人工智能的研究与应用(教科版)