分类模型评估(混淆矩阵, precision, recall, f1-score)的原理和Python实现

这篇具有很好参考价值的文章主要介绍了分类模型评估(混淆矩阵, precision, recall, f1-score)的原理和Python实现。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

混淆矩阵

当我们已经获取到一个分类模型的预测值,可以通过不同指标来进行评估。

往往衡量二分类模型是基于以下的混淆矩阵概念:

  • True Positive:真实值为正、预测值为正(真阳性)
  • False Positive:真实值为负、预测值为正(假阳性)
  • False Negative:真实值为正、预测值为负(假阴性)
  • True Negative:真实值为负、预测值为负(真阴性)

但面对多个分类,比如40多个类别时无法单纯通过正负来混淆矩阵的每个值。在多个类别分类中,可以将每个类别视为应该独立的二元分类问题。对于每个类别A,其余不是类别A的样本可以临时合并为应该“非A”类别。我们将以上定义为:

  • 真阳性 (TP):对于特定类别A,TP是正确标记为A的样本数量。

  • 假阳性 (FP):对于特定类别A,FP是错误地标记为A的其他类别的样本数量。

  • 假阴性 (FN):对于特定类别A,FN是实际为A没有被标记为A的样本数量。

  • 真阴性 (TN):对于特定类别A,TN是既不属于A也没有被标记为A的样本数量。

多分类指标

准确度 Accuracy

\[Accuracy = \frac{TP+TN}{\text{No.samples}} \]
  • 准确率指的是所有预测准确的样本的占比。
  • 适用于类别分布平衡的情况,但是再类别不平衡的数据集中可能不是非常靠谱。

精确度 Precision

\[Precision = \frac{TP}{TP+FP} \]
  • 精确度指的是真阳性在所有正类中的比例,又叫测准率。对于某个类别A,相当于正确判断为A的数量在所有类别A的数量中的比例。
  • 精确度高意味着较少的假阳性(误报)

召回率 Recall(灵敏度 Sensitivity)

\[Recall = \frac{TP}{TP+FN} \]
  • 召回率指的是真阳性在所有被预测为正类数据中的比例,表示的是模型获取正类的能力。
  • 召回率高表示漏报正确样本的情况少

F1 Score

\[F1 Score = 2 \times \frac{Precision \times Recall}{Presision+Recall} \]
  • F1 Score用于衡量精确度和召回率之间的平衡,作为评估标准更加全面。

  • 适用于评估类别不平衡的情况。

  • F1 Score相当于 Precision 和 Recall的调和平均数

    \[F1 Score = \frac {2TP}{2TP+FP+FN} \]
    • 调和平均数 (Harmonic mean) 经常被用与分子相同、分母不同的场合,将分母调成平均数再当分母。
      \[H_n = \frac{n}{\sum_{i=1}^n \frac{1}{x_i}} \]

其中后三种measure在衡量整个数据时,通过以下方式汇总这些指标:

  • 宏观平均 (Macro-average):对每个类别计算指标,然后计算这些指标的平均值。这种方法对所有类别给予了相同的重要性,即使它们的样本量不同。
  • 加权平均 (Weighted-average):与宏观平均类似,但是在计算平均值时考虑到了每个类别的样本量。这对于不平衡的数据集特别有用。
  • 微观平均 (Micro-average):将所有类别的TP、FP和FN累加起来,然后计算指标。在不平衡的数据集中,微观平均通常被认为更为公平。

在Python中绘制混淆矩阵

import matplotlib.pyplot as plt
from sklearn.metrics import confusion_matrix, ConfusionMatrixDisplay

y_true = [...]	# 正确的标签
y_pred = [...]	# 预测的标签

conf_mat = confusion_matrix(y_true, y_pred)
disp = ConfusionMatrixDisplay(confusion_matrix=conf_mat,
                              display_labels=np.unique(y_true)
                              )
disp.plot()

在Python中计算各分类指标

python中想要计算如上指标主要是使用 sklearn 包中预先写好的函数。可以使用以下代码进行计算:

from sklearn.metrics import precision_score, recall_score, f1_score, accuracy_score

y_true = [...]	# 正确的标签
y_pred = [...]	# 预测的标签

# 计算正确率
accuracy = accuracy_score(y_true, y_pred)
# 计算精确度、召回率和F1分数
precision = precision_score(y_true, y_pred, average='macro')  # 'macro'表示未加权平均
recall = recall_score(y_true, y_pred, average='macro')
f1 = f1_score(y_true, y_pred, average='macro')

或者可以一次性获取所有分类指标的报告。输出的是一个string,每一行为每个类别的统计指标。文章来源地址https://www.toymoban.com/news/detail-760746.html

from sklearn.metrics import classification_report

# 如果使用`output_dict=True`将获得字典输出, 每个key为一个类别,value为这个类别的各指标dict。
report = classification_report(y_true, y_pred, output_dict=False)	
print(report)

到了这里,关于分类模型评估(混淆矩阵, precision, recall, f1-score)的原理和Python实现的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 分类模型评估:混淆矩阵、准确率、召回率、ROC

    分类模型评估:混淆矩阵、准确率、召回率、ROC

    在二分类问题中,混淆矩阵被用来度量模型的准确率。因为在二分类问题中单一样本的预测结果只有Yes or No,即:真或者假两种结果,所以全体样本经二分类模型处理后,处理结果不外乎四种情况,每种情况都有一个专门称谓,如果用一个2行2列表格描述,得到的就是“混淆

    2024年02月06日
    浏览(38)
  • 图像分类模型评估之用python绘制混淆矩阵confusion_matrix

    目录 训练完成后,生成混淆矩阵!!!! ImageNet数据格式,生成混淆矩阵!!!! 非 ImageNet数据格式,定义导入数据的类名和方法!!!! 非imageNet数据格式,完成生成混淆矩阵程序代码!!!! 混淆矩阵:是用于评估分类模型性能的一种常用工具,可以用于计算分类准确

    2024年02月01日
    浏览(8)
  • Spark - AUC、Accuracy、Precision、Recall、F1-Score 理论与实战

    Spark - AUC、Accuracy、Precision、Recall、F1-Score 理论与实战

    推荐场景下需要使用上述指标评估离、在线模型效果,下面对各个指标做简单说明并通过 spark 程序全部搞定。 搜广推场景下最常见的就是 Ctr 2 分类场景,对于真实值 real 和预测值 pre 分别有 0 和 1 两种可能,从而最终 2x2 产生 4 种可能性: - TP 真正率 对的预测对 ,即 1 预测

    2024年02月02日
    浏览(11)
  • ML分类模型的评估量 —— 混淆矩阵、查准率、查全率、正确率、F1值

    ML分类模型的评估量 —— 混淆矩阵、查准率、查全率、正确率、F1值

    Some Metrics suitable for machine learning classification model - Confusion Matrix, Precision Score, Recall Score and F1 Score. 本文意在介绍,监督学习(Supervised Learning)中,几个常被用于评估 分类模型 的 指标 (model metric),并讨论它们在二分类模型和多分类模型中的具体计算方法。 图 1 混淆矩阵(

    2024年02月07日
    浏览(8)
  • 【超详细】机器学习sklearn之分类模型评估 混淆矩阵、ROC曲线、召回率与精度、F1分数

    【超详细】机器学习sklearn之分类模型评估 混淆矩阵、ROC曲线、召回率与精度、F1分数

    机器学习之分类模型的评估 学习分类模型评估的方法: 1、混淆矩阵 2、分类结果汇总 3、ROC曲线 4、召回率与精度 5、F1分数 一、评估分类器性能的度量 1、真正(true positive, TP)或f++,对应的是被分类模型正确预测的正样本数。 2、假负(false negative, FN)或f±对应的是被分类模型错

    2023年04月08日
    浏览(10)
  • python 中,sklearn包下的f1_score、precision、recall使用方法,Accuracy、Precision、Recall和F1-score公式,TP、FP、TN、FN的概念

    python 中,sklearn包下的f1_score、precision、recall使用方法,Accuracy、Precision、Recall和F1-score公式,TP、FP、TN、FN的概念

    目录 1.sklearn.metrics.f1_score 2.sklearn.metrics.precision_score 3.sklearn.metrics.recall_score 4.Accuracy,、Precision、 Recall和F1-score公式​​​​​​​ 5.TP、FP、TN、FN的概念 重要参数说明: y_true: 一维数组,或标签指示数组/稀疏矩阵 (真实值) y_pred: 一维数组,或标签指示数组/稀疏矩阵 (

    2023年04月24日
    浏览(10)
  • 【计算机视觉 | 目标检测】术语理解3:Precision、Recall、F1-score、mAP、IoU 和 AP

    在图像目标检测中,常用的评估指标包括以下几项: 精确率(Precision):也称为查准率,表示被分类为正类别的样本中真正为正类别的比例。计算公式为:Precision = TP / (TP + FP),其中TP是真正例(模型正确预测为正类别的样本数),FP是假正例(模型错误预测为正类别的样本数

    2024年02月13日
    浏览(15)
  • 【机器学习笔记15】多分类混淆矩阵、F1-score指标详解与代码实现(含数据)

    【机器学习笔记15】多分类混淆矩阵、F1-score指标详解与代码实现(含数据)

    参考文章 4.4.2分类模型评判指标(一) - 混淆矩阵(Confusion Matrix)_进击的橘子猫的博客-CSDN博客_混淆矩阵 之前在逻辑回归的文章中简单提到过F1-score,但并没有详细对其进行说明和代码实现。这里补一下。 混淆矩阵 (又称 误差矩阵 )是评判模型结果的指标,属于模型评估的

    2023年04月17日
    浏览(9)
  • 目标检测评估指标mAP:从Precision,Recall,到AP50-95

    目标检测评估指标mAP:从Precision,Recall,到AP50-95

    True Positive 满足以下三个条件被看做是TP         1. 置信度大于阈值(类别有阈值,IoU判断这个bouding box是否合适也有阈值)         2. 预测类型与标签类型相匹配(类别预测对了)         3. 预测的Bouding Box和Ground Truth的IoU大于阈值(框 打对了)。 当存在多个满足条件的预

    2024年02月09日
    浏览(27)
  • YOLOv8性能评估指标->mAP、Precision、Recall、FPS、IoU

    YOLOv8性能评估指标->mAP、Precision、Recall、FPS、IoU

    开始讲解之前推荐一下我的专栏,本专栏的内容支持(分类、检测、分割、追踪、关键点检测),专栏目前为限时折扣, 欢迎大家订阅本专栏,本专栏每周更新3-5篇最新机制,更有包含我所有改进的文件和交流群提供给大家。   专栏目录: YOLOv8改进有效系列目录 | 包含卷积、主

    2024年02月03日
    浏览(8)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包