【Python机器学习】模型评估与改进——分组交叉验证

分组交叉验证是非常常见的一种交叉验证策略,它适用于数据中的分组高度相关时。比如我们想构建一个从人脸图片中识别情感的系统,并且收集了100个人的照片的数据集,其中每个人都进行了多次拍摄,分别展示了不同的情感。我们的目标是构架一个分类器,能够正确识别未包含在数据集中的人的情感。

我们可以使用默认的分层交叉验证来度量分类器的性能。但是这样的话,同一个人的照片可能同时出现在训练集和测试集中。对于分类器而言,检测训练集中出现过的人脸情感比全新的人脸要容易得多。因此,为了准确评估模型对新的人脸的泛化能力,我们必须确保训练集和测试集中包含不同人的图像。

为了实现这一点,我们可以使用GroupKFold,它以groups数组作为参数,可以用来说明照片中对应的是哪个人。这里的groups数组表示数据中的分组,在创建训练集和测试集的时候不应该将其分开,也不应该与类别标签弄混。

数据分组的这种例子常见于医疗应用,你可能拥有来自同一名病人的多个样本,但想要将其泛化到新的病人。同样的,在语音识别领域,你的数据集中可能包含同一名发言人的多条记录,但你希望能够识别到新的发言人的讲话。

下面的例子,用到了一个由groups数组制定分组的模拟数据集。这个数据集包含12个数据点,且对于每个数据点,groups指定了该点所属的分组。一共分成了4个组,前3个样本属于第一组,接下来的4个样本属于第二组,以此类推:

from sklearn.datasets import make_blobs
from sklearn.model_selection import cross_val_score
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import GroupKFoldX,y=make_blobs(n_samples=12,random_state=0)
logreg=LogisticRegression()
groups=[0,0,0,1,1,1,1,2,2,3,3,3]scores=cross_val_score(logreg,X,y=y,groups=groups,cv=GroupKFold(n_splits=3))
print('Cross-validation scores:\n{}'.format(scores))

样本不需要按分组进行排序,我们这么做只是为了便于说明。基于这些标签计算得到的划分如下图:

mglearn.plots.plot_group_kfold()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/38568.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用gradle上传maven工件到新版maven central仓库central.sonatype.com

本文主要用到的插件是sonatype-uploader, 该插件主要功能是上传依赖文件夹到中央仓库。 该文件夹的生成也十分简单,不用担心。 前言 最近在研究maven插件的时候发现发布的网站发生了变化,使用之前的一些插件没能满足我发布依赖的需求,也可…

数据结构与算法笔记:实战篇 - 剖析Redis常用数据类型对应的数据结构

概述 从本章开始,就进入实战篇的部分。这部分主要通过一些开源醒目、经典系统,真枪实弹地教你,如何将数据结构和算法应用到项目中。所以这部分的内容,更多的是知识点的回顾,相对于基础篇和高级篇,其实这部…

fastapi swagger在线接口文档报错

fastapi swagger在线接口文档报错 1、报错信息 Unable to render this definition The provided definition does not specify a valid version field. Please indicate a valid Swagger or OpenAPI version field. Supported version fields are swagger: “2.0” and those …

【收藏】SaaS运营方法论:寻找合适的合作伙伴的四大方法

一、使用关键字研究工具查找您所在行业的相关博客、频道和网站 但是,根据你的业务规模和性质,如果你需要主动出击寻找合适的推广伙伴,而不仅限于让潜在合作伙伴找你,你可以使用关键字研究工具。 实话实说,最好的联盟营…

告别手工录入,企业财务凭证同步迈入智能新时代!

一、客户介绍 某金融租赁股份有限公司作为一家领先的金融租赁企业,一直秉持着创新驱动、服务至上的经营理念。随着业务的快速发展,该公司在财务管理和凭证管理方面遇到了新的挑战。为了更好地提升工作效率,降低运营成本,该公司决…

Spring两大核心思想 IoC和AoP

目录 ✨ 一、什么是IoC 1、定义 🎊 2、IoC思想 🎊 3、优势 🎊 4、对象的管理 🎊 存对象:Component 取对象:AutoWired ✨二、什么是DI 1、定义 🎊 2、IoC和DI的关系🎊 可…

嵌入式Linux系统编程 — 5.7 Linux系统中proc文件系统

目录​​​​​​​ 1 proc文件系统简介 2 proc 文件系统的使用 2.1 使用 cat 命令读取 2.2 使用 read()函数读取 1 proc文件系统简介 /proc 文件系统,也称为进程信息文件系统(Process Information file system),是一种在 Li…

Windows电脑自建我的世界MC服务器并与好友远程联机游戏教程

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

08:结构体

结构体 1、为什么需要结构体2、如何定义结构体3、怎么使用结构体变量3.1、赋值和初始化3.2、结构体变量的输出 1、为什么需要结构体 为了表示一些复杂的事物,而普通的基本类型无法满足实际要求。什么叫结构体 把一些基本类型数据组合在一起形成的一个新的数据类型&…

高性能全局内存池

什么时候使用高性能全局内存池? 1.高并发下有些资源需要被频繁创建和销毁,我们都知道系统调用是很消耗资源的。因此,内存池是一块申请好的资源放在缓存里。 2.频繁使用时增加了系统内存的碎片,降低内存使用效率。内存分配必须起…

11083 旅游背包(优先做)

这个问题可以使用动态规划来解决。我们可以定义一个三维数组dp,其中dp[i][j][k]表示前i种物品,总体积不超过j,总重量不超过k的最大价值。 我们可以使用四重循环来填充这个数组。外层循环遍历所有的物品,第二层循环遍历所有可能的…

2024软件设计师笔记之考点版(一考就过):考试前一天 考点记忆版

软件设计师之一考就过:成绩版 1、栈区:函数调用和返回,由系统控制;存非静态局部变量;用栈实现嵌套调用(递归调用),逆波兰式业绩也叫后缀式,用栈进行求值 2、堆区&#x…

Big Data Tools插件

一些介绍 在Jetbrains的产品中,均可以安装插件,其中:Big Data Tools插件可以帮助我们方便的操作HDFS,比如 IntelliJ IDEA(Java IDE) PyCharm(Python IDE) DataGrip(SQL …

【RabbitMQ问题踩坑】RabbitMQ设置手动ack后,消息队列有多条消息,只能消费一条,就不继续消费了,这是为什么 ?

现象:我发送5条消息到MQ队列中,同时,我在yml中设置的是需要在代码中手动确认,但是我把代码中的手动ack给关闭了,会出现什么情况? yml中配置,配置需要在代码中手动去确认消费者消费消息成功&…

教学技能大赛包括哪些内容

在教育的广阔天地里,教师的角色至关重要。他们不仅是知识的传递者,更是学生心灵成长的引导者。那么,当教师们聚集一堂,参加一场教学技能大赛时,会有哪些内容成为他们展示自我、互相学习的舞台呢? 教学技能大…

瓦罗兰特报错57/error code59/报错903的解决办法

《无畏契约》在注重产品设计之预,也注重世界观、英雄性格的塑造,里面的英雄灵感来源于不同的国家和地区,有非常本土化的特色,每个英雄的性格人设非常鲜明。这些人物特色让这款游戏有了新的玩法。很多玩家都进入到游戏体验。然后有…

SeeSR: Towards Semantics-Aware Real-World Image Super-Resolution

CVPR2024 香港理工大学&OPPO&bytedancehttps://github.com/cswry/SeeSR?tabreadme-ov-file#-licensehttps://arxiv.org/pdf/2311.16518#page5.80 问题引入 因为有些LR退化情况比较严重,所以超分之后的结果会出现语义的不一致的情况,所以本文训…

Python入门 2024/7/1

目录 第一个程序hello world 数据类型 注释 变量 用type类型查看数据类型 ​编辑 数据类型转换 ​编辑 标识符 运算符 字符串的三种定义方式 字符串拼接 ​编辑​编辑 字符串格式化 第一个程序hello world 区分c和python c是printf python是print print("h…

晶振在硬件系统中的位置选择与优化策略

在现代电子设备中,晶振扮演着至关重要的角色,它们提供稳定且精确的时钟信号,是系统心脏般的存在。然而,晶振的性能不仅取决于其本身的质量,还与它在硬件系统中的位置选择紧密相关。一个恰当的位置能够最大限度地减少外…

基于K线最短路径构造的非流动性因子

下载地址https://download.csdn.net/download/SuiZuoZhuLiu/89492221