首页 > 编程语言 >【Python机器学习】模型评估与改进——对交叉验证的更多控制

【Python机器学习】模型评估与改进——对交叉验证的更多控制

时间:2024-07-01 19:28:55浏览次数:3  
标签:iris val 交叉 Python kfold cross score import 验证

在k交叉验证中,可以利用cv参数来调节cross_cal_score所使用的参数。但scikit-learn允许提供一个交叉验证分离器作为cv参数,来对数据划分过程进行更精细的控制。

对于大多数使用场景而言,回归问题默认的k折交叉验证与分类问题的分层k折交叉验证的表现都很好,但有些情况下可能希望使用不同的策略。比如,我们想要在一个分类数据集上使用标准k折交叉验证来重现别人的结果。为了实现这一点,我们首先必须从model_selection模块中导入KFold分离器类,并用我们想要使用的折数来将其实例化,并将kfold分离器对象作为cv参数传入cross_val_score:

from sklearn.datasets import load_iris
import mglearn.plots
import matplotlib.pyplot as plt
from sklearn.model_selection import KFold
from sklearn.model_selection import cross_val_score
from sklearn.linear_model import LogisticRegression

iris=load_iris()
kfold=KFold(n_splits=5)
logreg=LogisticRegression()

print('Cross-validation score:\n{}'.format(cross_val_score(logreg,iris.data,iris.target,cv=kfold)))

通过这种方法,我们可以验证,在iris数据集上使用不分层3折交叉验证确实是一个不好的注意:

kfold=KFold(n_splits=3)
logreg=LogisticRegression()

print('Cross-validation score:\n{}'.format(cross_val_score(logreg,iris.data,iris.target,cv=kfold)))

要知道,在iris数据集中,每个折对应一个类别,因此学不到任何内容。解决这个问题的另一个方法是将数据打乱来代替分层,以打乱样本按标签的顺序。可以通过将KFold的shuffle参数设为True来实现这一点。如果我们将数据打乱,那么还需要固定random_state以获得可重复的打乱结果。否则,每次运行cross_val_score将会得到不同的结果,因为每次使用的是不同的划分。

在划分数据之前将其打乱可以得到更好的结果:

kfold=KFold(n_splits=3,shuffle=True,random_state=0)

print('Cross-validation score:\n{}'.format(cross_val_score(logreg,iris.data,iris.target,cv=kfold)))

标签:iris,val,交叉,Python,kfold,cross,score,import,验证
From: https://blog.csdn.net/weixin_39407597/article/details/140104719

相关文章

  • Python数据可视化
     基于asciichartpyimportasciichartpydata=[1,2,3,4,5,4,3,2,1]chart=asciichartpy.plot(data)print(chart) 基于sparklinesimportsparklinesdata=[1,2,3,4,5,4,3,2,1]sparkline_str=''.join(sparklines.sparklines(data))p......
  • 用Python pynput库捕捉每一次组合键的优雅舞步
    哈喽,大家好,我是木头左!一、初识pynput:键盘与鼠标的监控利器当谈论计算机交互时,键盘和鼠标无疑是最常用的设备。无论是编写代码、浏览网页还是玩游戏,都依赖于这些输入设备与机器沟通。但在一些特殊的场景中,可能需要知道用户具体按下了哪些键,甚至是以何种顺序、何种速度进行操作......
  • 华为OD机试D卷 --智能成绩表--24年OD统一考试(Java & JS & Python & C & C++)
    文章目录题目描述输入描述输出描述用例题目解析算法源码题目描述小明来到某学校当老师,需要将学生按考试总分或单科分数进行排名,你能帮帮他吗?输入描述第1行输入两个整数,学生人数n和科目数量m。0<n<1000<m<10第2行输入m个科目名称,彼......
  • 华为OD机试D卷 --最富裕的小家庭--24年OD统一考试(Java & JS & Python & C & C++)
    文章目录题目描述输入描述输出描述用例题目解析算法源码题目描述在一颗树中,每个节点代表一个家庭成员,节点的数字表示其个人的财富值,一个节点及其直接相连的子节点被定义为一个小家庭。现给你一颗树,请计算出最富裕的小家庭的财富和。输入描述第一行为一......
  • 华为OD机试D卷 --最多购买宝石数目--24年OD统一考试(Java & JS & Python & C & C++)
    文章目录题目描述输入描述输出描述用例1用例2用例3用例4题目解析算法源码题目描述橱窗里有一排宝石,不同的宝石对应不同的价格,宝石的价格标记为gems[i]0≤i<nn=gems.length宝石可同时出售0个或多个,如果同时出售多个,则要求出售的宝石编号连续;......
  • 华为OD机试D卷 --最大括号深度--24年OD统一考试(Java & JS & Python & C & C++)
    文章目录题目描述输入描述输出描述用例题目解析算法源码题目描述现有一字符串仅由‘(‘,’)’,‘{‘,’}’,’[‘,’]’六种括号组成。若字符串满足以下条件之一,则为无效字符串:①任一类型的左右括号数量不相等;②存在未按正确顺序(先左后右)闭合的括号。输出......
  • Python武器库 - 科研中常用的python图像操作 - 转换图像颜色通道模式BGR到RGB
    应用场景:待补充。。。(主要是因为opencv默认的图像颜色通道模式为BGR,与我们通常说到的RGB模式有区别,所以这个转换操作还是比较常用的)主要用到cv2.cvtColor()函数代码示例:importcv2img1=cv2.imread('example_img/img1.png')cv2.imshow('lingdushowimg1',img1)img2=......
  • 新手教学系列——【Python开发】不同系统更换pip源的方法
    在使用Python进行开发时,你可能会发现使用pip安装包的速度较慢,尤其是在国内进行操作时。为了提高安装速度,我们可以将pip的默认源更换为国内的一些镜像源。本文将详细介绍如何在不同操作系统上进行这一操作,并给出常用的国内镜像源。为什么要换源pip默认使用的是官方的Python包......
  • 苹果内购的凭证验证和解密(前端和本地node服务)
    苹果内购的凭证验证和解密最近在搞苹果内购,是使用微信提供的Dount提供的小程序转成APP。苹果内购使用的也是他们封装好的js接口,然后后端在解析我传递的支付凭证的时候他一直解析不成功然后我坚信自己的传递参数没有问题,我就自己使用node写了一个本地服务去验证我的支付凭证......
  • Python武器库 - 科研中常用的python图像操作 - 图像添加文字
    应用场景:在科研中,有时需要在生成结果中标注文字作为说明,或者添加文字在一行图片的开头作为标题(这个效果通常需要配合在一行图片的开头添加一张空(纯黑)图片,在该图片中添加文字作为标题,使用python-opencv来创建一张纯色图片的操作,详情见我的另一篇随笔https://www.cnblogs.com......