机器学习第13天:模型性能评估指标

 

☁️主页 Nowl

🔥专栏《机器学习实战》 《机器学习》

📑君子坐而论道,少年起而行之 

文章目录

交叉验证

保留交叉验证

k-折交叉验证

留一交叉验证

混淆矩阵

精度与召回率

介绍

精度

召回率

区别

使用代码

偏差与方差

介绍

区别


交叉验证

保留交叉验证

介绍

将数据集划分为两部分,训练集与测试集,这也是简单任务中常用的方法,其实没有很好地体现交叉验证的思想

使用代码

# 导入库
from sklearn.model_selection import train_test_split# 划分训练集与测试集,参数分别为总数据集,测试集的比例
train, test = train_test_split(data, test_size=0.2)

k-折交叉验证

介绍

将数据集划分为k个子集,每次采用k-1个子集作为训练集,剩下的一个作为测试集,然后再重新选择,使每一个子集都做一次测试集,所以整个过程总共训练k次,得到k组结果,最后将这k组结果取平均,得到最终结果,这就是交叉验证的思想

使用代码

# 导入库
from sklearn.model_selection import KFold
from sklearn.model_selection import cross_val_score# 设置K值,这里假设K=5
k_fold = KFold(n_splits=5, shuffle=True, random_state=42)# 初始化模型,这里以随机森林为例
model = RandomForestClassifier()# 使用K折交叉验证
scores = cross_val_score(model, X, y, cv=k_fold)

留一交叉验证

介绍

与k折验证思想一致,只是子集的数量和数据集的大小一样,往往在数据集较小的时候使用这种方法

混淆矩阵

介绍

在分类任务中,我们可以用混淆矩阵来判断模型的性能,混淆矩阵记录了A类被分为B类的次数,以下是一个动物识别任务的混淆矩阵,要知道cat被预测成了几次dog,那么就查看混淆矩阵的第1行第2列

使用代码

# 导入库
from sklearn.metrics import confusion_matrix# 打印混淆矩阵,参数为真实结果与预测结果
print(confusion_matrix(y, y_pred))

精度与召回率

介绍

要解释精度与召回率,我们先定义几个量

TP:模型预测为正且真实值为正的数量

FP:模型预测为正且真实值为负的数量

FN:模型预测为负且真实值为正的数量

精度

\frac{TP}{TP+FP}

精度就是模型正确预测的正类在所有预测为正类中的比例

召回率

\frac{TP}{TP+FN}

召回率就是模型正确预测的正类在所有正类中的比例

区别

可能还是有点混淆?其实精度高就是宁愿不预测,也不愿意预测错,召回率高就是宁愿预测错,也不愿意遗漏正类,我们具体来看两个场景

在地震预测中,我们是要提高召回率还是精度?显而易见,召回率,因为我们宁愿预测器错误地提醒我们,也不愿意当地震来临时它不报警

那么在食品检测中呢?当然要提高精度,因为我们宁愿健康的食品被误判为不合格,也不愿意有不合格的食品进入市场

召回率与精度两个指标不可兼得,我们要根据具体任务做出取舍

使用代码

# 导入库
from sklearn.metrics import precision_score, recall_score# 使用精度评估函数,参数是真实结果与预测结果
print(precision_score(y, y_pred))# 使用召回率评估函数,参数是真实结果与预测结果
print(recall_score(y, y_pred))

偏差与方差

介绍

偏差衡量一个模型预测结果和真实值的差距,偏差高往往代表模型欠拟合

方差衡量模型在不同数据集上预测的差异,方差高往往代表模型过拟合

区别

具有高偏差的模型对训练数据和新数据的表现都较差,因为它们未能捕捉到数据的复杂性。

具有高方差的模型在训练数据上可能表现得很好,但对新数据的泛化能力差,因为它们过于依赖于训练数据的细节。

结语

机器学习模型性能测量对于评估模型的质量、选择最佳模型、调整模型超参数以及在实际应用中预测新数据都具有重要意义。

  1. 评估模型质量: 通过性能测量,你可以了解模型在训练数据上的表现如何。这有助于判断模型是否足够复杂以捕捉数据中的模式,同时又不过度拟合训练数据。

  2. 选择最佳模型: 在比较不同模型时,性能测量是选择最佳模型的关键因素。你可以通过比较模型在相同任务上的性能指标来确定哪个模型更适合你的问题。

  3. 调整模型超参数: 通过观察模型在不同超参数设置下的性能,你可以调整超参数以提高模型的性能。性能测量可以指导你在超参数搜索空间中寻找最佳设置。

  4. 评估泛化能力: 模型在训练数据上表现良好并不一定意味着它在新数据上也能表现良好。性能测量帮助你评估模型的泛化能力,即模型对未见过的数据的预测能力。

  5. 支持业务决策: 在实际应用中,模型的性能直接关系到业务的决策。例如,在医疗领域,一个精确的疾病预测模型可能影响患者的治疗计划。

  6. 改进模型: 通过分析性能测量的结果,你可以识别模型的弱点,并采取相应的措施来改进模型,例如增加训练数据、特征工程、选择更合适的模型等。

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

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

相关文章

zerotier 搭建 moon中转服务器 及 自建planet

搭建moon 服务器 环境准备 # 安装依赖 yum install wget gcc gcc-c git -y yum install json-devel -y# 下载及安装 curl -s https://install.zerotier.com/ | sudo bash节点ID 配置 配置moon.json文件 cd /var/lib/zerotier-one/# 导出依赖 zerotier-idtool initmoon ide…

SpringBoot项目连接,有Kerberos认证的Kafka

在连接Kerberos认证kafka之前,需要了解Kerberos协议 二、什么是Kerberos协议 Kerberos是一种计算机网络认证协议 ,其设计目标是通过密钥系统为网络中通信的客户机(Client)/服务器(Server)应用程序提供严格的身份验证服务,确保通信双方身份的真…

Spring Boot 升级3.x 指南

Spring Boot 升级3.x 指南 1. 升级思路 先创建一个parent项目&#xff0c;打包类型为pom&#xff0c;继承自spring boot的parent项目 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId&…

历时三个月,我发布了一款外卖返钱小程序

近几年&#xff0c;推广外卖红包爆火&#xff0c;各种推广外卖红包的公众号层出不穷。于是&#xff0c;我就在想外卖红包究竟是怎么一回事。就这样&#xff0c;我带着问题开始了关于外卖红包的研究。 在研究的过程中&#xff0c;我开始了解商品联盟、推广分成、cps等一系列相关…

网络攻击当搭配什么产品比较好

网络攻击无处不在&#xff0c;当要时刻谨记 2014年&#xff0c;索尼影业受到黑客攻击&#xff0c;导致公司内部文件和电子邮件泄露。 2015年&#xff0c;美国联邦政府的办公人员信息遭到盗窃&#xff0c;影响了超过2100万人的个人信息。 2016年&#xff0c;Yahoo的3亿用户账…

java 中集合之一【map】,map循环

在Java中&#xff0c;常用的集合框架有以下几个&#xff1a; 1、List&#xff08;列表&#xff09;&#xff1a;List是有序的集合&#xff0c;允许包含重复元素。常用的实现类有ArrayList和LinkedList。ArrayList是基于动态数组实现的&#xff0c;支持快速随机访问&#xff1b;…

android之图片选择器--pictureselector

推荐一个安卓图片/视频/文件选择器。简单好用。 不多废话。直接上代码&#xff1a; 首先&#xff0c;添加依赖&#xff1a; //图片选择器api io.github.lucksiege:pictureselector:v3.11.1//图片压缩api io.github.lucksiege:compress:v3.11.1//图片裁剪api io.github.lucksie…

Springboot3+vue3从0到1开发实战项目(一)

一. 可以在本项目里面自由发挥拓展 二. 知识整合项目使用到的技术 后端开发 &#xff1a; Validation, Mybatis,Redis, Junit,SpringBoot3 &#xff0c;mysql&#xff0c;Swagger, JDK17 &#xff0c;项目部署 前端开发&#xff1a; Vue3&#xff0c;Vite&#xff0c;Router…

Java数组和集合

在Java中&#xff0c;数组和集合是两个重要的概念&#xff0c;它们用于存储和操作数据。本文将详细介绍Java中的数组和集合&#xff0c;包括它们的定义、初始化、访问和常见操作 一、数组&#xff08;Array&#xff09; 数组是一种用于存储相同类型数据的容器&#xff0c;它可…

DNS的各种进阶新玩法

你们好&#xff0c;我的网工朋友&#xff0c;今天和你聊聊DNS。 01 什么是DNS&#xff1f; mac地址诞生&#xff0c;可是太不容易记忆了&#xff0c;出现了简化了IP形式&#xff0c;它被直接暴露给外网不说&#xff0c;还让人类还是觉得比较麻烦&#xff0c;干脆用几个字母算了…

【Git】一文教你学会 submodule 的增、删、改、查

添加子模块 $ git submodule add <url> <path>url 为想要添加的子模块路径path 为子模块存放的本地路径 示例&#xff0c;添加 r-tinymaix 为子模块到主仓库 ./sdk/packages/online-packages/r-tinymaix 路径下&#xff0c;命令如下所示&#xff1a; $ git subm…

用自己热爱的事赚钱,是多么的幸福

挖掘天赋可能有些困难&#xff0c;但挖掘爱好就简单多啦&#xff01;最幸福的事情就是能用自己喜欢的事情赚钱。 我们要说的是一个博主&#xff0c;他非常喜欢骑自行车&#xff0c;虽然他的工作是在外贸公司做销售&#xff0c;但每当有空时&#xff0c;他都会骑自行车。而且他…

Nginx同时支持Http和Https的配置详解

当配置Nginx同时支持HTTP和HTTPS时&#xff0c;需要进行以下步骤&#xff1a; 安装和配置SSL证书&#xff1a; 获得SSL证书&#xff1a;从可信任的证书颁发机构&#xff08;CA&#xff09;或使用自签名证书创建SSL证书。 将证书和私钥保存到服务器&#xff1a;将SSL证书和私钥…

spring 的事务隔离;Spring框架的事务管理的优点

文章目录 说一下 spring 的事务隔离&#xff1f;Spring框架的事务管理有哪些优点&#xff1f;你更倾向用哪种事务管理类型&#xff1f; 聊一聊spring事务的隔离&#xff0c;事务的隔离对于一个系统来说也是非常重要的&#xff0c;直接上干货&#xff01;&#xff01;&#xff0…

Python与设计模式--享元模式

10-Python与设计模式–享元模式 一、网上咖啡选购平台 假设有一个网上咖啡选购平台&#xff0c;客户可以在该平台上下订单订购咖啡&#xff0c;平台会根据用户位置进行 线下配送。假设其咖啡对象构造如下&#xff1a; class Coffee:name price 0def __init__(self,name):se…

Go iota简介

当声明枚举类型或定义一组相关常量时&#xff0c;Go语言中的iota关键字可以帮助我们简化代码并自动生成递增的值。本文档将详细介绍iota的用法和行为。 iota关键字 iota是Go语言中的一个预定义标识符&#xff0c;它用于创建自增的无类型整数常量。iota的行为类似于一个计数器…

数据库基础入门 — SQL排序与分页

我是南城余&#xff01;阿里云开发者平台专家博士证书获得者&#xff01; 欢迎关注我的博客&#xff01;一同成长&#xff01; 一名从事运维开发的worker&#xff0c;记录分享学习。 专注于AI&#xff0c;运维开发&#xff0c;windows Linux 系统领域的分享&#xff01; 本…

[深度理解] 重启 Splunk Search Head Cluster

1: 背景: 关于释放Splunk search head 的job 运行压力:splunk search head cluster 要重启的话,怎么办? 答案是:splunk rolling-restart shcluster-members Initiate a rolling restart from the command line Invoke the splunk rolling-restart command from any me…

3款免费次数多且功能又强大的国产AI绘画工具

hi&#xff0c;同学们&#xff0c;本期是我们第55 期 AI工具教程 最近两个月&#xff0c;国内很多AI绘画软件被关停&#xff0c;国外绝大部分AI绘画工具费用不低&#xff0c;因此 这两天我 重新整理 国产 AI绘画 工具 &#xff0c; 最终 筛选了 3款功能强大&#xf…

LeeCode前端算法基础100题(3)- N皇后

一、问题详情&#xff1a; 按照国际象棋的规则&#xff0c;皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。 n 皇后问题 研究的是如何将 n 个皇后放置在 nn 的棋盘上&#xff0c;并且使皇后彼此之间不能相互攻击。 给你一个整数 n &#xff0c;返回所有不同的 n 皇后…