【机器学习 | 分类指标大全】全面解析分类评估指标:从准确率到AUC,多分类问题也不在话下, 确定不来看看?

news2024/11/17 11:32:10

在这里插入图片描述

🤵‍♂️ 个人主页: @AI_magician
📡主页地址: 作者简介:CSDN内容合伙人,全栈领域优质创作者。
👨‍💻景愿:旨在于能和更多的热爱计算机的伙伴一起成长!!🐱‍🏍
🙋‍♂️声明:本人目前大学就读于大二,研究兴趣方向人工智能&硬件(虽然硬件还没开始玩,但一直很感兴趣!希望大佬带带)

在这里插入图片描述

该文章收录专栏
[✨— 《深入解析机器学习:从原理到应用的全面指南》 —✨]

分类指标大全

      • 精确度(Accuracy)
      • 灵敏度(Sensitivity/Recall)
      • 特异度(Specificity)
      • 精确率(Precision)
      • F1值(F1-score)
      • AUC值(Area Under the ROC Curve)
      • 多分类指标(multiple classification index)

分类评估指标(以下代码均可在sklearn.metrics找到):

  1. 精确度(Accuracy):分类正确的样本数占总样本数的比例。
  2. 灵敏度(Sensitivity/Recall):真实正类中被正确预测为正类的样本数占总的真实正类样本数的比例。
  3. 特异度(Specificity):真实负类中被正确预测为负类的样本数占总的真实负类样本数的比例。
  4. 精确率(Precision): 被预测为正类的样本中真正是正类的样本数占被预测为正类的样本数的比例。
  5. F1值(F1-score):综合考虑精确率和灵敏度,是精确率和灵敏度的调和平均数
  6. AUC值(Area Under the ROC Curve):ROC曲线下方的面积,用于表示分类器的整体性能

当对一个分类模型进行评估时,通常需要使用多个评估指标来综合考虑其性能。

精确度(Accuracy)

精确度是指分类正确的样本数占总样本数的比例,是最简单直接的评估指标。

精确度计算公式如下:

A c c u r a c y = T P + T N T P + F P + T N + F N Accuracy = \frac{TP + TN}{TP + FP + TN + FN} Accuracy=TP+FP+TN+FNTP+TN

其中, T P TP TP 表示真正类(True Positive)的样本数,即被分类器正确预测为正类的样本数; T N TN TN 表示真负类(True Negative)的样本数,即被分类器正确预测为负类的样本数; F P FP FP 表示误报样本(False Positive)的样本数,即被分类器错误地预测为正类的样本数; F N FN FN 表示漏报样本(False Negative)的样本数,即被分类器错误地预测为负类的样本数。

from sklearn.metrics import accuracy_score

y_true = [0, 1, 0, 1]
y_pred = [0, 1, 1, 1]

accuracy = accuracy_score(y_true, y_pred)
print("Accuracy:", accuracy)

灵敏度(Sensitivity/Recall)

灵敏度也称召回率,是指真实正类中被正确预测为正类的样本数占总的真实正类样本数的比例。灵敏度能够反映出分类器对于正样本的识别能力。

灵敏度计算公式如下:

S e n s i t i v i t y = T P T P + F N Sensitivity = \frac{TP}{TP + FN} Sensitivity=TP+FNTP

from sklearn.metrics import recall_score

recall = recall_score(y_true, y_pred)
print("Sensitivity/Recall:", recall)

特异度(Specificity)

特异度是指真实负类中被正确预测为负类的样本数占总的真实负类样本数的比例。特异度能够反映出分类器对于负样本的识别能力。

特异度计算公式如下:

S p e c i f i c i t y = T N F P + T N Specificity = \frac{TN}{FP + TN} Specificity=FP+TNTN

精确率(Precision)

精确率是指被预测为正类的样本中真正是正类的样本数占被预测为正类的样本数的比例,能够反映出分类器对于正样本的预测准确性。

精确率计算公式如下:

P r e c i s i o n = T P T P + F P Precision = \frac{TP}{TP + FP} Precision=TP+FPTP

F1值(F1-score)

F1值是综合考虑精确率和灵敏度的调和平均数,能够综合评价分类器的预测准确性和召回率。

F1值计算公式如下:

F 1 = 2 ∗ P r e c i s i o n ∗ S e n s i t i v i t y P r e c i s i o n + S e n s i t i v i t y = 2 ∗ T P 2 ∗ T P + F P + F N F1 = 2 * \frac{Precision * Sensitivity}{Precision + Sensitivity} = \frac{2 * TP}{2 * TP + FP + FN} F1=2Precision+SensitivityPrecisionSensitivity=2TP+FP+FN2TP

AUC值(Area Under the ROC Curve)

AUC(Area Under the Curve)是一种常用的评估分类模型性能的指标,通常用于ROC曲线(Receiver Operating Characteristic curve)分析。AUC表示ROC曲线下方的面积,其取值范围在0到1之间。

以下是对AUC指标的详细解释:

1. ROC曲线:

  • ROC曲线是以二分类模型为基础绘制出来的一条图形。(如果是多分类,则需要绘制多条)

  • 它展示了当分类器阈值变化时,真阳率(True Positive Rate, TPR)与假阳率(False Positive Rate, FPR)之间的关系。

  • TPR表示正确预测为正例样本占所有实际正例样本比例(sensitivity\recall);FPR表示错误预测为正例样本占所有实际负例样本比例(1 - specificity)。

    以下是绘制ROC曲线的步骤:

    1. 收集模型预测结果和相应的真实标签。这些结果包括模型对每个样本的预测概率或分数以及它们对应的真实标签(0表示负例,1表示正例)。

    2. 根据预测概率或分数对样本进行排序。从高到低排列,使得排名最高的样本具有最大的预测概率或分数。

    3. 选择一个分类阈值,并根据该阈值将样本划分为正例和负例。例如,如果阈值设置为0.5,则所有预测概率大于等于0.5的样本被视为正例,而小于0.5则被视为负例。

    4. 计算此时的真正例率(TPR)和假正例率(FPR)。

      TPR = TP / (TP + FN)

      FPR = FP / (FP + TN)

    5. 重复步骤3和4,使用不同分类阈值来计算一系列不同点对应的TPR和FPR。这些点构成了ROC曲线上的各个坐标。

    6. 绘制ROC曲线,以FPR作为x轴,TPR作为y轴。通过连接这些坐标点可以得到一条典型情况下具有平滑形状且递增趋势的曲线。

    在理想情况下,ROC曲线会靠近左上角,并且与对角线之间存在较大距离。该区域被认为是模型性能最佳、具有高度可区分能力和较小误判率的区域。

2. AUC计算:

  • AUC被定义为ROC曲线下方区域与坐标轴之间所围成的面积。
  • 当一个完美预测器具有TPR=1且FPR=0时,其AUC等于1;而当一个随机猜测器无法进行准确预测时,其AUC约等于0.5。

3. 解读和应用:

  • 较高的AUC意味着分类器具有较好的性能,在不同阈值设置下能够更准确地区分正负类别。
  • AUC可以用于比较不同分类模型的性能,选择最佳模型。
  • AUC还可以用来评估特征工程、调整阈值或优化算法等操作对模型性能的影响。

4. 与准确率和召回率的区别:

  • 准确率(Accuracy)是一个全局指标,衡量分类器在所有样本上预测正确的比例。
  • 召回率(Recall)是一个针对正例类别的指标,衡量分类器成功找到正例样本占所有实际正例样本比例。
  • AUC更关注分类器在不同阈值下判定真假阳性的表现,因此它提供了一种更全面且相对鲁棒的评估方法。

5. 如何运用到多分类:

在多分类问题中,我们可以将每个类别作为正例,并计算出多个二分类子问题的ROC曲线,并通过求解这些子问题下各自点集合并取平均值来获得整体的多类别ROC曲线。

为了绘制多类别的ROC曲线,在每个子问题上执行以下步骤:

  • 将当前类别标记为正例,其他所有类别标记为负例。
  • 计算预测概率或得分,并按照阈值确定预测结果。
  • 根据不同阈值下的真阳率和假阳率绘制ROC曲线。

总而言之,AUC是通过计算ROC曲线下方所围成面积来评估二分类模型性能的指标。它提供了一种直观且综合考虑TPR和FPR之间权衡关系的方式,并广泛应用于机器学习中各种分类问题中。

多分类指标(multiple classification index)

在面对多分类问题时,常用的指标包括准确率(Accuracy)、**混淆矩阵(Confusion Matrix)**以及宏平均(Macro-average)和微平均(Micro-average)。

  1. 准确率:准确率是最简单直观的评估指标,表示模型正确预测的样本比例。对于多分类问题,准确率被定义为所有正确分类的样本数除以总样本数。

  2. 混淆矩阵:混淆矩阵可以提供更详细的多类别分类性能信息。它是一个二维表格,行代表真实类别,列代表预测类别。每个单元格记录了属于特定真实类别和预测类别组合的样本数量。

    例如,在3个类别A、B、C下进行分类时,可能有以下情况:

    • 类A中有10个样本被正确地预测为A。
    • 类B中有5个样本被错误地预测为A。
    • 类C中有3个样本被错误地预测为A。

    这些信息都可以通过混淆矩阵得到,并进一步计算其他指标如精确度、召回率等。

  3. 宏平均与微平均:在处理多分类问题时,我们通常需要将各种指标汇总成一个统一的度量(即拆分成多个二分类子问题,最后求平均得到结果)。宏平均和微平均是两种常用的方法。

    • 宏平均:对每个类别单独计算指标(如精确度、召回率等),然后求取其算术平均值。它将所有类别视为同等重要,适用于各个类别都具有相似重要性的情况

    • 微平均:将多分类问题视为二分类问题,在所有样本上进行计算指标(如精确度、召回率等)。这意味着每个预测都被认为是同等重要的,并且更加关注少数类别。适用于不同类别之间存在明显不平衡时使用。

无论是准确率、混淆矩阵还是宏/微平均,这些指标可以帮助我们评估模型在多分类任务中的整体性能以及对每个特定类别的预测能力。根据具体需求和问题背景,选择合适的评估指标来解读和分析结果非常重要。
在这里插入图片描述

						  🤞到这里,如果还有什么疑问🤞
					🎩欢迎私信博主问题哦,博主会尽自己能力为你解答疑惑的!🎩
					 	 🥳如果对你有帮助,你的赞是对博主最大的支持!!🥳

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

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

相关文章

上传镜像到阿里云的ACR

1、开通阿里云ACR 2、在ACR 中创建命名空间 3、本地安装docker 4、登录到 开通ACR,需要配置访问凭证 [rootmaster ~]# docker login --username***lb registry.cn-beijing.aliyuncs.com Password: 5、给镜像打标签 [rootmaster ~]# docker images REPOSITORY …

❤ Vue工作常用的一些动态数据和方法处理

❤ Vue工作常用的一些动态数据和方法处理 &#xff08;1&#xff09;动态拼接相对路径结尾的svg 错误写法一 ❌ 正确写法 &#x1f646; <img :src"require(/assets//amazon/svg/homemenu${index}.svg)" style"height: 20px;display: block;margin: 0 au…

操作系统-笔记-第三章-内存管理

目录 三、第三章——内存管理 1、内存的基础知识 &#xff08;1.1&#xff09;程序装入&#xff08;三种&#xff09;——绝对装入 &#xff08;1.2&#xff09;程序装入&#xff08;三种&#xff09;——可重定位装入 &#xff08;1.3&#xff09;程序装入&#xff08;三…

[b01lers2020]Life on Mars1

打开靶场 直接bp抓包 多次点击左侧超链接 发现/query?search这个参数一直在发生改变 可以发现它返回了json格式的数据&#xff0c;猜测是sql注入 放进hackbar进行操作 orderby进行判断 http://6f5976a0-0364-4c05-a7f5-6f0c863e7e41.node4.buuoj.cn:81/query?searchamazonis…

铜矿人员定位安全方案

针对铜矿中的人员定位安全需求&#xff0c;可以采用以下方案&#xff1a; 1.实时人员定位系统&#xff1a;建立一个实时人员定位系统&#xff0c;通过在矿工的工作服或安全帽上安装UWB或RFID定位设备&#xff0c;以及相应的接收器和基站&#xff0c;实时跟踪和定位矿工的位置。…

苍穹外卖 day2 反向代理和负载均衡

一 前端发送的请求&#xff0c;是如何请求到后端服务 前端请求地址&#xff1a;http://localhost/api/employee/login 路径并不匹配 后端接口地址&#xff1a;http://localhost:8080/admin/employee/login 二 查找前端接口 在这个页面上点击f12 后转到networ验证&#xff0…

高并发内存池(PageCache)[3]

原理 PageCache 共128页 static const size_t NPAGES 128;centralcache向pagecache申请2page时&#xff0c;首先向下扫描&#xff0c;有大的会切分出来&#xff0c;然后再挂在对应桶当中 centralcache从pagecache获取span 计算一次获取几页 static const size_t PAGE_SH…

Servlet+Jsp+JDBC实现房屋租赁管理系统(源码+数据库+论文+系统详细配置指导+ppt)

一、项目简介 本项目是一套基于ServletJsp房屋租赁管理系统&#xff0c;主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的Java学习者。 包含&#xff1a;项目源码、数据库脚本等&#xff0c;该项目附带全部源码可作为毕设使用。 项目都经过严格调试&#xff0c;…

如何最简单、通俗地理解什么是机器学习?

那就究竟什么是学习呢?诺贝尔经济学奖和图灵奖双料得主、卡耐基梅隆大学的赫伯特 西蒙 (Herbert Simon) 教授是这样定义的&#xff1a;“学习是系统通过经验提升性能的过程”。可以看到&#xff0c;学习是一个过程&#xff0c;并且这里有3个关键词&#xff0c;即经验、提升和…

【万能模型训练方法】你没看错,就这么简单

1. 只支持DF结构(Liaef结构特殊&#xff0c;不支持true face机制) 2. dst丢各种人脸数据进去&#xff0c;越杂越好&#xff0c;src保持单人数据 3. 训练时把true face参数打开&#xff0c;推荐0.01 你可以在别的DF预训练模型上&#xff0c;按上述方法练。然后就挂机练&#xff…

GaussDB之应用无损透明(ALT)

1. 背景 GaussDB作为一款企业级分布式数据库&#xff0c;提供了“同城跨AZ双活、两地三中心、双集群强一致”等极致的高可用容灾能力。当某个数据库节点由于故障无法对外提供服务时&#xff0c;为了继续保证数据库服务的可用性&#xff0c;JDBC驱动会将业务后续的数据库连接请…

Python入门--变量和数据类型

什么是变量&#xff1f; 在编程中&#xff0c;变量是指内存中的一段存储空间&#xff0c;用于存储数据。使用变量可以方便地存储数据并在程序中进行操作。 如何定义变量&#xff1f; 在Python中&#xff0c;可以使用“”符号来定义变量&#xff0c;例如&#xff1a; a 1 b …

python刷小红书流量(小眼睛笔记访问量),metrics_report接口,原理及代码,以及x-s签名验证2023-08-21

一、什么是小眼睛笔记访问量 如下图所示&#xff0c;为笔记访问量。 二、小眼睛笔记访问量接口 1、url https://edith.xiaohongshu.com/api/sns/web/v1/note/metrics_report 2、payload data{"note_id": note_id,"note_type": note_type,"report_t…

Linux解决RocketMQ中NameServer启动问题

启动步骤可以查看官网&#xff0c;https://github.com/apache/rocketmq 一下说明遇到的问题。 1&#xff1a;ROCKETMQ_HOME问题 根据官网提示进入mq/bin目录下&#xff0c;可以使用./mqnamesrv进行NameServer启动&#xff0c;但是会遇到第一个问题&#xff0c;首次下载Rocket…

变量与条件语句

目录 1、何为变量 变量的基础知识 1.1、取名字 1.2、弱引用和强引用 1.3、read -p 1.4、变量的作用范围 1.5、运算&#xff08;整数&#xff09; 1.6、环境变量 1.7、位置变量 1.8、预设变量 2、条件语句 2.1、测试 2.1.1、比较整数数值 2.1.2、字符串比较 2.1.…

“智能监测”进泵房,管理开了“千里眼”

生活水泵房和消防水泵房作为楼宇中的主要基础设施之一&#xff0c;传统的生活水泵房和消防水泵房操作繁琐&#xff0c;需要人工控制&#xff0c;耗费大量成本。泵房的监测和维护工作困难&#xff0c;存在隐患无法及时发现和解决。此外&#xff0c;泵房的设备老化和能效低下&…

积跬步至千里 || 矩阵可视化

矩阵可视化 矩阵可以很方面地展示事物两两之间的关系&#xff0c;这种关系可以通过矩阵可视化的方式进行简单监控。 定义一个通用类 from matplotlib import pyplot as plt import seaborn as sns import numpy as np import pandas as pdclass matrix_monitor():def __init…

[C++ 网络协议编程] 域名及网络地址

1. DNS服务器 DNS&#xff08;Domain Name System&#xff09;&#xff1a;是对IP地址和域名&#xff08;如:www.baidu.com等&#xff09;进行相互转换的系统&#xff0c;其核心是DNS服务器。 我们输入的www.baidu.com是域名&#xff0c;是一种虚拟地址&#xff0c;而非实际地…

图论基础和表示(Java 实例代码)

目录 图论基础和表示 一、概念及其介绍 二、适用说明 三、图的表达形式 Java 实例代码 src/runoob/graph/DenseGraph.java 文件代码&#xff1a; src/runoob/graph/SparseGraph.java 文件代码&#xff1a; 图论基础和表示 一、概念及其介绍 图论(Graph Theory)是离散数…

之前windows安装mysql时没有指定配置文件,现需修改默认端口号

一、之前windows安装mysql 在官网下载指定版本的mysql https://downloads.mysql.com/archives/community/ 我下载的绿色版的mysql解压到了D:\mysql-5.7.29-winx64 在系统变量中新建MYSQL_HOME它的值为D:\mysql-5.7.29-winx64 在系统变量中找到Path然后编辑添加%MYSQL_HOME%\…