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

前言

在机器学习和深度学习中,常见的分类任务可以分为:二分类(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_scoreaccuracy = accuracy_score(y_true, y_pred)
print(f"Accuracy: {accuracy}")

2. 精确率 (Precision)

定义

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

用法

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

代码
from sklearn.metrics import precision_scoreprecision = precision_score(y_true, y_pred, average='macro')  # 'macro'、'micro'、'weighted'等
print(f"Precision: {precision}")

3. 召回率(Recall)

定义

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

用法

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

代码
from sklearn.metrics import recall_scorerecall = recall_score(y_true, y_pred, average='macro')
print(f"Recall: {recall}")

4. F1分数(F1 Score)

定义

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

用法

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

代码
from sklearn.metrics import f1_scoref1 = 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_matrixconf_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_scoreroc_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_reportclass_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_scorekappa = cohen_kappa_score(y_true, y_pred)
print(f"Cohen's Kappa: {kappa}")

9. 平均精度 (Average Precision)

定义

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

用法

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

代码
from sklearn.metrics import average_precision_scoreavg_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_lossloss = hamming_loss(y_true, y_pred)
print(f"Hamming Loss: {loss}")

2. 平均精度 (Average Precision Score)

定义

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

用法

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

代码
from sklearn.metrics import average_precision_scorepre_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_scorer_a_score = roc_auc_score(y_true, y_score, average='micro')

4. 覆盖误差 (Coverage Error)

定义

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

用法

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

代码
from sklearn.metrics import coverage_errorCoverage_E = coverage_error(y_true, y_score)

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

定义

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

用法

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

代码
from sklearn.metrics import label_ranking_lossl_r_loss = label_ranking_loss(y_true, y_score)

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

定义

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

用法

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

代码
from sklearn.metrics import label_ranking_average_precision_scorel_r_a_p_score = label_ranking_average_precision_score(y_true, y_score)

7. Classification Report

定义

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

用法

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

代码
from sklearn.metrics import classification_reportclass_report = classification_report(y_true, y_pred, target_names=label_names)
print(f"Classification Report:\n{class_report}")

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

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

相关文章

Notcoin 即将空投:你需要知道什么

Notcoin 于 2024 年 1 月推出,是 Telegram 上的一款边玩边赚游戏,用户可以通过点击硬币图标获得 Notcoin 代币 (NOT) 形式的奖励。NOT 建立在开放网络区块链(称为“TON 区块链”)上,由 Open Builders 创始人 Sasha Plo…

IOS-05 Swift循环控制语句

在 Swift 编程语言中,控制语句用于决定程序的执行流程,使我们能够根据不同的条件和情况来控制代码的执行顺序。下面我们将详细介绍几种常见的控制语句 一、for 循环 let names ["zhangsan","lisi"] for name in names{print(name…

DNS服务器搭建练习

练习要求: 3、搭建一个dns服务器,客户端可以使用该服务器解析域名www.haha.com为web服务器的 4、将客户端的ip地址中的域名解析服务器地址修改为第3题的dnt服务器的p,使用ping命令ping www.haha.com看能否ping通,用curl命令访问c…

FPGA开发——LED流水灯实现先从左往右流水,再从右往左流水

一、概述 我们在设计完一个方向的流水灯的设计时,总是会想实现让流水灯倒着流水回去的设计,这里我也是一样,实现这种设计的方法有很多种,其中就有直接使用case语句将所有可能包含进去编写,这种设计方法是最简单的&…

STM32通信协议 总集篇 (速记版)

名称引脚常用在双工时钟电平设备USARTTX、RX单片机和pc,单片机和单片机全双工异步单端点对点I2CSCL、SDA单片机和单片机半双工同步单端多设备SPISCLK、MOSI、MISO、CS单片机和单片机全双工同步单端多设备CANCAN_H、CAN_L智能汽车半双工异步差分多设备USBDP、DM半双工异步差分点…

[php7系列]--php7里的返回类型声明和标量类型声明及不要用isset判断数组是否定义某个KEY-最好使用array_key_exists

一、[php7系列]--php7里的返回类型声明和标量类型声明 php7里增加了返回类型声明和标题类型声明,可以理解为对一个方法的输入输出进行了类型验证,在PHP7之前,方法里的数组、对象参数是有类型声明的,但其它的整数、字符串等类型声明…

【海贼王航海日志:前端技术探索】HTML你学会了吗?(一)

目录 1 -> HTML概念 2 -> HTML结构 2.1 -> 认识HTML标签 2.2 -> HTML文件基本结构 2.3 -> 标签层次结构 3 -> 快速生成代码框架 4 -> HTML常见标签 4.1 -> 注释标签 4.2 -> 标题标签 4.3 -> 段落标签 4.4 -> 换行标签 4.5 ->…

ES(ElasticSearch)倒排索引

目录 正排与倒排索引 1.正排索引 作用: 优点: 缺点: 2.倒排索引 原理: 倒排索引的构建流程: 倒排索引的搜索流程: 优点: 缺点: 3. 应用场景 倒排索引中有几个非常重要的概念…

【二叉树的锯齿形层序遍历】python刷题记录

R2-树与二叉树篇 层序遍历双端队列deque # Definition for a binary tree node. # class TreeNode: # def __init__(self, val0, leftNone, rightNone): # self.val val # self.left left # self.right right class Solution:def zigzagLevelOr…

【读代码】高斯掩模

目录 问题: 主要功能: 问题: 看不懂实现的功能 主要功能: 从输出张量中提取与边界框对应的区域,并计算该区域与高斯核之间的均方误差(MSE)损失 例子 假设我们有以下输入: boxe…

我的创作纪念日(一)——Giser?Noder?不如“Computer”

目录 Giser?Noder?不如“Computer” 一、根源:保持学习习惯的刚需 二、机缘:processOn的另类替代 三、日常:对技术栈丰富的思考 四、成就:保持心态健康的活着 五、憧憬:能一直心态健康的活…

前端实现【 批量任务调度管理器 】demo优化

一、前提介绍 我在前文实现过一个【批量任务调度管理器】的 demo,能实现简单的任务批量并发分组,过滤等操作。但是还有很多优化空间,所以查找一些优化的库, 主要想优化两个方面, 上篇提到的: 针对 3&…

CSS技巧专栏:一日一例 14-纯CSS实现模拟水波波动填充按钮特效

CSS技巧专栏:一日一例 14-纯CSS实现模拟水波波动填充按钮特效 大家好,今天介绍一个在网上很常见的模拟水波波动要灌满按钮的动画效果,效果下面图所示。 本例图片 案例分析 我们沿着Z轴从上到下数一下一共有几个层: 文字层:白色文字阴影的黑色文字,当鼠标移动上来时候…

黑马点评--给店铺类型查询添加缓存

controller/ShopTypeController.java /*** 店铺分类查询,用于展示首页头部店铺分类* return*/GetMapping("list")public Result queryTypeList() {return typeService.queryList();} service/IShopTypeService.java Result queryList(); service/impl/S…

fatal: Could not read from remote repository. 解决方法

问题描述: Git : fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists。 解决方法: 当在网上尝试大量方法仍然失败的时候,不妨试试这个方法。 在 github 上&…

探索 Redis 不同集群架构的性能与应用

1. 引言 Redis的集群配置成为了提高数据可靠性和服务可用性的关键。本文将带领大家了解Redis的四种主要集群架构,并重点分析哨兵模式和Redis Cluster架构和优势。 2. Redis的四种集群架构 2.1 单实例Redis 使用单个 Redis 实例提供服务。适用于小规模应用&#…

论文阅读:Deformable DETR: Deformable Transformers for End-to-End Object Detection

论文阅读:Deformable DETR: Deformable Transformers for End-to-End Object Detection Deformable DETR: 基于稀疏空间采样的注意力机制,让DCN与Transformer一起玩! - 知乎 (zhihu.com) 【Deformable DETR 论文源码解读】Deformable Trans…

The Llama 3 Herd of Models.Llama 3 模型第1,2,3部分全文

现代人工智能(AI)系统是由基础模型驱动的。本文提出了一套新的基础模型,称为Llama 3。它是一组语言模型,支持多语言、编码、推理和工具使用。我们最大的模型是一个密集的Transformer,具有405B个参数和多达128K个tokens的上下文窗口。本文对Llama 3进行了广泛的实证评价。我们…

【error】AttributeError: module ‘cv2.dnn‘ has no attribute ‘DictValue‘(库冲突)

conda list conda remove opencv pip uninstall opencv-python conda list pip 同时卸载两个库 pip uninstall opencv-contrib-python opencv-python 没有and 直接写库名 module ‘cv2.dnn‘ has no attribute ‘DictValue‘解决办法_module cv2.dnn has no attribute d…

Linux - 环境变量、程序地址空间、进程地址空间及Linux2.6内核进程调度队列

目录 环境变量 基本概念 常见环境变量 查看环境变量的方法 测试PATH 测试HOME 测试SHELL 和环境变量相关的命令 环境变量的组织方式 通过代码获取环境变量 通过系统调用获取环境变量 程序地址空间 进程地址空间 Linux2.6内核进程调度队列 一个CPU拥有一个runqueue 优先级 活…