当前位置: 首页 > news >正文

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

前言

在机器学习和深度学习中,常见的分类任务可以分为:二分类(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}")

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 家具购物小程序的设计
  • (源码分析)springsecurity认证授权
  • 简单三步,帮你的照片重现高清,一键拯救摄影废片!
  • STM32——GPIO(点亮LEDLED闪烁)
  • Android中的usescleartexttraffic属性详解
  • 《学会 SpringBoot · 参数校验》
  • MyBatis基本工作原理
  • vue3中父子组件的双向绑定defineModel详细使用方法
  • Redis(三)
  • 27、美国国家冰雪中心(NSIDC)海冰密集度月数据下载与处理
  • MFC窗口大小最大化最小化随拖动调整大小
  • Golang | Leetcode Golang题解之第283题移动零
  • 【Go系列】Go的UI框架Fyne
  • SQL Server中非结构化数据的存储神器:文件表的魔力
  • 21 B端产品经理之技术常识(1)
  • 【402天】跃迁之路——程序员高效学习方法论探索系列(实验阶段159-2018.03.14)...
  • 【译】理解JavaScript:new 关键字
  • 07.Android之多媒体问题
  • extract-text-webpack-plugin用法
  • flask接收请求并推入栈
  • github指令
  • JDK 6和JDK 7中的substring()方法
  • JS题目及答案整理
  • Material Design
  • maya建模与骨骼动画快速实现人工鱼
  • Vue.js源码(2):初探List Rendering
  • 翻译--Thinking in React
  • 解决iview多表头动态更改列元素发生的错误
  • 聊聊spring cloud的LoadBalancerAutoConfiguration
  • 面试总结JavaScript篇
  • 入手阿里云新服务器的部署NODE
  • 使用权重正则化较少模型过拟合
  • 事件委托的小应用
  • Java总结 - String - 这篇请使劲喷我
  • ​​​【收录 Hello 算法】10.4 哈希优化策略
  • ​Benvista PhotoZoom Pro 9.0.4新功能介绍
  • ​你们这样子,耽误我的工作进度怎么办?
  • ​软考-高级-信息系统项目管理师教程 第四版【第19章-配置与变更管理-思维导图】​
  • # 利刃出鞘_Tomcat 核心原理解析(八)-- Tomcat 集群
  • #LLM入门|Prompt#1.7_文本拓展_Expanding
  • #预处理和函数的对比以及条件编译
  • (day18) leetcode 204.计数质数
  • (二)springcloud实战之config配置中心
  • (附源码)node.js知识分享网站 毕业设计 202038
  • (力扣)循环队列的实现与详解(C语言)
  • (一)模式识别——基于SVM的道路分割实验(附资源)
  • (原創) 如何使用ISO C++讀寫BMP圖檔? (C/C++) (Image Processing)
  • (转)机器学习的数学基础(1)--Dirichlet分布
  • .env.development、.env.production、.env.staging
  • .md即markdown文件的基本常用编写语法
  • .net 7和core版 SignalR
  • .NET Core WebAPI中使用swagger版本控制,添加注释
  • .NET(C#) Internals: as a developer, .net framework in my eyes
  • .NET/C# 异常处理:写一个空的 try 块代码,而把重要代码写到 finally 中(Constrained Execution Regions)
  • .NET版Word处理控件Aspose.words功能演示:在ASP.NET MVC中创建MS Word编辑器