二分类、多分类、多标签分类的评价指标

news2024/9/8 23:43:16

前言

在机器学习和深度学习中,常见的分类任务可以分为:二分类(Binary Classification); 多分类(Multi-class Classification); 多标签分类(Multi-label Classification); 序列分类 (Sequence Classification); 图分类 (Graph Classification)

一. 二分类(Binary Classification)

定义

每个样本只能属于两个类别中的一个

举例

癌症检测(有癌症 VS 无癌症)
垃圾邮件分类(垃圾邮件 VS 非垃圾邮件)

常见的评价指标

1. 准确率(Accuracy)

Accuracy = \frac{TP+TN}{TP+TN+FP+FN}

准确率表示模型预测正确的样本所有样本的比例。

2. 精确率(Precision)

Precision = \frac{TP}{TP+FP}

精确率表示在所有被预测为正类的样本中,真正为正类的比例。

3. 召回率(Recall)

Recall = \frac{TP}{TP+FN}

召回率表示在所有真正为正类的样本中,模型预测为正类的比例。

4. F1值(F1-Score)

F1 Score = 2\times \frac{Precision\times Recall}{TP+FN}

F1 值是精确率召回率的调和平均,综合考虑了这两个指标。

5. ROC 曲线(Receiver Operating Characteristic Curve)

ROC 曲线是以假阳性率(False Positive Rate, FPR)为横轴,真正例率(True Positive Rate, TPR,也就是召回率)为纵轴绘制的曲线。FPR 和 TPR 的计算公式分别为:

FPR = \frac{FP}{FP+TN}

TPR = \frac{TP}{TP+FN}

6. AUC(Area Under the ROC Curve)

AUC 是 ROC 曲线下的面积,表示分类器随机选择正负样本进行区分的能力,AUC 值越接近 1模型表现越好

7. PR 曲线(Precision-Recall Curve)

PR 曲线是以召回率为横轴,精确率为纵轴绘制的曲线。

8. 平均精度(Average Precision, AP)

AP 是 PR 曲线下的面积,反映了模型在不同阈值下的综合表现。

二. 多分类(Multi-class Classification)

定义

每个样本只能属于多个类别中的一个。

举例

图像分类(猫、狗、鸟)

文本分类(新闻文章分类为体育、科技、娱乐)

手写数字识别(数字0-9)

常见的评价指标

1. 准确率 (Accuracy)

定义

准确率是正确分类的样本数占总样本数的比例。

用法

适用于类别分布均衡的数据集。

代码
from sklearn.metrics import accuracy_score

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

2. 精确率 (Precision)

定义

精确率是模型正确预测的正类样本数占所有预测为正类的样本数的比例。

用法

适用于关注模型精确性的情况,尤其是当假阳性(False Positives)代价较高时。

代码
from sklearn.metrics import precision_score

precision = precision_score(y_true, y_pred, average='macro')  # 'macro'、'micro'、'weighted'等
print(f"Precision: {precision}")

3. 召回率(Recall)

定义

召回率是模型正确预测的正类样本数占所有实际为正类的样本数的比例。

用法

适用于关注模型召回能力的情况,尤其是当假阴性(False Negatives)代价较高时。

代码
from sklearn.metrics import recall_score

recall = recall_score(y_true, y_pred, average='macro')
print(f"Recall: {recall}")

4. F1分数(F1 Score)

定义

F1分数是精确率和召回率的调和平均数。

用法

适用于需要平衡精确率和召回率的情况。

代码
from sklearn.metrics import f1_score

f1 = f1_score(y_true, y_pred, average='macro')
print(f"F1 Score: {f1}")

5.  混淆矩阵 (Confusion Matrix)

定义

混淆矩阵是一个表格,用于描述模型预测结果的表现。

用法

提供详细的分类结果信息,包括真阳性(TP)、假阳性(FP)、真阴性(TN)和假阴性(FN)。

代码
from sklearn.metrics import confusion_matrix

conf_matrix = confusion_matrix(y_true, y_pred)
print(f"Confusion Matrix:\n{conf_matrix}")

6. ROC AUC (Receiver Operating Characteristic Area Under Curve)

定义

ROC AUC 是 ROC 曲线下的面积,衡量模型的分类性能

用法

适用于需要评估模型对所有类别的区分能力的情况。

代码
from sklearn.metrics import roc_auc_score

roc_auc = roc_auc_score(y_true, y_score, average='macro', multi_class='ovr')
print(f"ROC AUC: {roc_auc}")

7.  分类报告 (Classification Report)

定义

分类报告汇总了精确率、召回率和 F1 分数等指标。

用法

提供全面的模型评估信息,适用于多分类问题。

代码
from sklearn.metrics import classification_report

class_report = classification_report(y_true, y_pred)
print(f"Classification Report:\n{class_report}")

8. Cohen's Kappa

定义

Cohen's Kappa 是一种评估分类模型性能的统计指标,考虑了随机分类的影响。

用法

适用于需要评估分类一致性的情况。

代码
from sklearn.metrics import cohen_kappa_score

kappa = cohen_kappa_score(y_true, y_pred)
print(f"Cohen's Kappa: {kappa}")

9. 平均精度 (Average Precision)

定义

平均精度是不同阈值下精确率和召回率的加权平均。

用法

适用于评估模型在不同决策阈值下的表现。

代码
from sklearn.metrics import average_precision_score

avg_precision = average_precision_score(y_true, y_score, average='macro')
print(f"Average Precision: {avg_precision}")

三、多标签分类(Multi-label Classification)

定义

每个样本可以同时属于多个类别。类别之间不是互斥的,一个样本可以有多个标签。

举例

图像标注(图像中可能同时包含“人”、“车”、“树”)

医学诊断(一个病人可能同时患有多种疾病)

常见的评价指标

1. Hamming Loss

定义

Hamming Loss 是指预测错误的标签的比例。

用法

适用于衡量模型整体错误率。

代码
from sklearn.metrics import hamming_loss

loss = hamming_loss(y_true, y_pred)
print(f"Hamming Loss: {loss}")

2. 平均精度 (Average Precision Score)

定义

平均精度是指在不同阈值下的精度(Precision)和召回率(Recall)之间的关系。它是精度-召回曲线下的面积。

用法

当需要评价模型对正类的预测能力,并且关心模型在不同阈值下的表现时。

代码
from sklearn.metrics import average_precision_score

pre_score = average_precision_score(y_true, y_score, average='samples')

3. ROC AUC (Receiver Operating Characteristic Area Under Curve)

定义

ROC AUC 是 ROC 曲线下的面积,ROC 曲线是 TPR(True Positive Rate)与 FPR(False Positive Rate)之间的关系图。

用法

当需要评价模型的整体分类能力,不受分类阈值的影响时。

代码
from sklearn.metrics import roc_auc_score

r_a_score = roc_auc_score(y_true, y_score, average='micro')

4. 覆盖误差 (Coverage Error)

定义

覆盖误差是指在预测的标签中,需要覆盖所有真实标签的最小预测数。

用法

当需要评估模型的预测结果是否包含所有真实标签时。

代码
from sklearn.metrics import coverage_error

Coverage_E = coverage_error(y_true, y_score)

5. 标签排序损失 (Label Ranking Loss)

定义

标签排序损失是指模型预测的标签排序中真实标签的错误排序比例。

用法

当需要评估模型对标签的排序能力时。

代码
from sklearn.metrics import label_ranking_loss

l_r_loss = label_ranking_loss(y_true, y_score)

6. 标签排序平均精度 (Label Ranking Average Precision Score)

定义

标签排序平均精度是指所有预测标签中,真实标签的平均精度。

用法

当需要评估模型的标签排序精度时。

代码
from sklearn.metrics import label_ranking_average_precision_score

l_r_a_p_score = label_ranking_average_precision_score(y_true, y_score)

7. Classification Report

定义

分类报告汇总了精确率、召回率和 F1 分数等指标。

用法

提供全面的模型评估信息,适用于多标签分类问题。

代码
from sklearn.metrics import classification_report

class_report = classification_report(y_true, y_pred, target_names=label_names)
print(f"Classification Report:\n{class_report}")

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

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

相关文章

SQL优化相关

文章目录 SQL优化1. 数据插入2. 主键优化页分裂页合并索引设计原则 3. order by 优化4. group by 优化5. limit优化6. count优化7. update 优化 SQL优化 1. 数据插入 当我们需要插入多条数据时候,建议使用批量插入,因为每次插入数据都会执行一条SQL&am…

使用YApi平台来管理接口

快速上手 进入YApi官网,进行注册登录https://yapi.pro/添加项目 3. 添加分类 4. 添加接口 5. 添加参数 添加返回数据 可以添加期望 验证 YAPI(Yet Another Practice Interface)是一个现代化的接口管理平台,由淘宝团队…

pip install albumentations安装下载遇19kB/s超级慢细水管解决办法

albumentations 是一个用于图像增强的 Python 库,它提供了丰富的图像变换功能,可以用于数据增强,从而提高深度学习模型的泛化能力。 直接安装命令: pip install albumentations但是如果半夜遇到这种19kB/s的下载速度 为头发着想&…

【通信模块】LoRa与LoRaWAN简介

LoRaWAN网络 技象科技相关文章总结,学习笔记,原文链接如下,转载请标明该出处: LORA: https://www.techphant.cn/tag/l-2 LORAWAN:https://www.techphant.cn/tag/l-3 其他:如LAN https://www…

网络通信---TCP协议1

今日内容 三次握手: 指建立tcp连接时,需要客户端和服务端总共发送三次报文确认连接。 四次挥手: 断开一个tcp连接,需要客户端和服务端发送四个报文以确认断开。 编程模型 TCP报文 客户端 服务端

第6篇文献研读生态廊道相关综述

该文发在生态与农村环境学报。该文章写了生态廊道概念的发展历程、生态廊道类型及功能、生态廊道划定的理论和方法、生态廊道的时间和国内大型生态廊道建设实践。 这篇文章可以让大家了解生态廊道的知识。

Rocketmq-5.3.0和对应dashboard的最新版本Docker镜像,本人亲自制作,部署十分方便,奉献给大家

一、Rocketmq 最新版本5.3.0,采用docker镜像安装方式 二、官方rocketmq镜像对内存等参数配置非常不灵活便利 为了快速、灵活部署rocketmq,以及能方便对其内存等参数进行设置,特意制作了关于它的docker镜像。 三、镜像获取 最新rocketmq-5.…

使用二进制来理解数据和二进制的计算

1 使用二进制来理解数据 和人类的思维习惯不同的是,计算机将把所有的东西数字化之后才会进行处理。那么计算机能理解的数字是什么样的呢?其实,在计算机内部,不管是什么信息都使用二进制来保存和处理的。 计算机为什么要用二进制…

芋道微服务全栈开发日记(商品sku数据归类为规格属性)

商品的每一条规格和属性在数据库里都是单一的一条数据,从数据库里查出来后,该怎么归类为对应的规格和属性值?如下图: 在商城模块,商品的单规格、多规格、单属性、多属性功能可以说是非常完整,如下图&#x…

搭建规范化的vue2项目

项目包含的库 Vue2VuexRouterEslintPrettier 环境 vue:2.6.14 eslint:7.32.0 prettier:2.4.1 eslint-plugin-prettier:4.0.0 eslint-plugin-vue:8.0.3 vue/cli:5.0.8 步骤 全局安装cli工具 npm in…

Vue3----扩展 element Plug card

扩展 element Plug card 增加全屏&#xff0c;折叠操作项 核心代码 <template><div class"cc-card-component"><el-card v-if"state.isShow" :class"state.class" :bodyStyle"bodyStyle" :shadow"props.shadow…

ic进阶|性能篇02:一文带你了解一种特殊的并行技术-展开!

本期文章让我们聊聊一种数字ic设计技术——展开&#xff0c;展开用于产生一个一次迭代就相当于原有结构的多次迭代的新电路结构。其相当于之前聊过的折叠技术的反向操作&#xff0c;折叠使用一个功能单元通过多次迭代来完成原有电路结构一次迭代的操作&#xff0c;相对于通过时…

访问控制列表(ACL)

文章目录 ACL原理与基本配置ACL分类ACL组成ACL规则的匹配与应用 ACL原理与基本配置 ACL(Access Control List&#xff0c;访问控制列表) 读取二层、三层、四层报文信息根据预先定义好的规则对报文进行过滤和分类实现网络访问控制、防止网络攻击和提高网络带宽利用率等目的提高…

USB3.0的等长要求到底是多少?

USB2.0与USB3.0接口的PCB布局布线要求PCB资源PCB联盟网 - Powered by Discuz! (pcbbar.com) 90欧姆阻抗&#xff0c;走差分线&#xff1a; 重点来了&#xff1a;

cf场+线性dp

Problem - B - Codeforces 思路&#xff1a; 这其实是一道数学题&#xff08;最开始一直在枚举&#xff0c;服啦&#xff09; 我们的目的是求最大利润 当a>b是时直接令k0,利润n*a即可 当a<b时存在两种情况&#xff1a; 1.b-a>n即所有b-i1的情况都>a&#xff0…

【数据结构】哈希表二叉搜索树详解

&#x1f48e; 欢迎大家互三&#xff1a;2的n次方_ &#x1f48e;所属专栏&#xff1a;数据结构与算法学习 &#x1f341;1. 二叉搜索树 二叉搜索树也称为二叉查找树或二叉排序树&#xff0c;是一种特殊的二叉树结构&#xff0c;它的特点是&#xff1a; 1. 若左树不为空&am…

SCI算法!发文首选!参数优化下的BiLSTM-KAN模型回归预测,Python代码

声明&#xff1a;文章是从本人公众号中复制而来&#xff0c;因此&#xff0c;想最新最快了解各类算法的家人&#xff0c;可关注我的VX公众号&#xff1a;python算法小当家&#xff0c;不定期会有很多免费代码分享~ KAN是2024年最新的算法&#xff0c;是近期非常热门的一…

leetcode112. 路径总和 leetcode113. 路径总和II,图文并茂,教你完全弄懂DFS,附详细代码

leetcode112. 路径总和 给你二叉树的根节点 root 和一个表示目标和的整数 targetSum 。判断该树中是否存在 根节点到叶子节点 的路径&#xff0c;这条路径上所有节点值相加等于目标和 targetSum 。如果存在&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 …

实验2-3-8 计算火车运行时间

//实验2-3-8 计算火车运行时间 /* 输入格式&#xff1a;输入在一行中给出2个4位正整数&#xff0c;其间以空格分隔&#xff0c;分别表示火车的出发时间和到达时间。 每个时间的格式为2位小时数&#xff08;00-23&#xff09;和2位分钟数&#xff08;00-59&#xff09;&#xff…

从0到1,AI我来了- (4)AI图片识别的理论知识-II

上篇文章&#xff0c;我们理解了我们程序的神经网络设计&#xff0c;这篇我们继续&#xff0c;把训练迭代过程分析一下&#xff0c;完成这两篇文章&#xff0c;下面问题&#xff0c;应该能回答了。 一张图片&#xff0c;如何被计算机读懂&#xff1f;pytorch 封装的网络&#…