当前位置: 首页 >  技术分享 >  分类模型评估(混淆矩阵, precision, recall, f1-score)的原理和Python实现

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

导读:混淆矩阵.当我们已经获取到一个分类模型的预测值,可以通过不同指标来进行评估。.往往衡量二分类模型是基于以下的混淆矩阵概念:.True Positive:真实值为正、预测值为正(真阳性).False Positive:真实值为负、预测值为正(假阳性).False Negative:

混淆矩阵

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

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

  • 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)** 经常被用与分子相同、分母不同的场合,将分母调成平均数再当分母。

\[Hn = \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,每一行为每个类别的统计指标。

from sklearn.metrics import classification_report

# 如果使用`output_dict=True`将获得字典输出, 每个key为一个类别,value为这个类别的各指标dict。
report = classification_report(y_true, y_pred, output_dict=False)	
print(report)
内容
  • 《领域驱动设计》:从领域视角深入仓储(Repository)的设计和实现
    《领域驱动设计》:从领域视角深入
    2023-12-04
    一、前言 “.DDD设计的目标是关注领域模型而并非技术来创建更好的软件,假设开发人员构建了一个SQL,并将它传递给基础设
  • JVM调优篇:探索Java性能优化的必备种子面试题
    JVM调优篇:探索Java性能优
    2023-12-04
    JVM内存模型.首先面试官会询问你在进行JVM调优之前,是否了解JVM内存模型的基础知识。这是一个重要的入门问题。JVM
  • 游戏中模型动画的几种实现方式
    游戏中模型动画的几种实现方式
    2023-12-02
    游戏内动画的实现方式一般有这几种:.骨骼动画.顶点动画.材质动画.CPU蒙皮动画.骨骼动画.骨骼动画是一种基于骨骼系统的
  • 可爱儿童内衣套装,优质棉质,柔软透气,呵护宝宝肌肤
    可爱儿童内衣套装,优质棉质,柔软
    2024-01-05
    可爱儿童内衣套装,优质棉质,柔软透气,呵护宝宝肌肤.宝宝的皮肤是非常娇嫩的,所以选择合适的内衣套装对于宝宝的健康和舒适至
  • 时尚潮流运动鞋
    时尚潮流运动鞋
    2024-01-15
    时尚潮流运动鞋.时尚潮流运动鞋一直是年轻人喜爱的时尚单品,它不仅舒适耐穿,更是一种个性的象征。随着时尚潮流不断更新,运动
  • 修身弹力牛仔裤
    修身弹力牛仔裤
    2023-12-26
    修身弹力牛仔裤:展现你的魅力.一、时尚的必备单品.修身弹力牛仔裤一直都是时尚界的必备单品,它不仅可以展现出个人的魅力,还
  • 休闲简约短袖衬衫
    休闲简约短袖衬衫
    2023-12-21
    休闲简约短袖衬衫.现代人生活节奏快,休闲简约的穿着成为时尚潮流。短袖衬衫作为经典的休闲单品,一直备受时尚人士的青睐。它舒
  • 休闲宽松T恤衫,释放自在舒适气息
    休闲宽松T恤衫,释放自在舒适气息
    2023-12-26
    休闲宽松T恤衫,释放自在舒适气息.在这个喧嚣的都市中,人们的生活节奏变得越来越快,压力也越来越大。因此,人们更加注重舒适
  • 潮流风衣大衣,彰显都市时尚风采
    潮流风衣大衣,彰显都市时尚风采
    2023-12-16
    潮流风衣大衣,彰显都市时尚风采.潮流风衣大衣一直是时尚界备受追捧的单品之一。它既能为我们遮风挡雨,又能为我们穿出时尚感,
  • 时尚修身连衣裙,展现优雅女性魅力
    时尚修身连衣裙,展现优雅女性魅力
    2023-12-06
    时尚修身连衣裙,展现优雅女性魅力.时尚修身连衣裙一直是女性衣橱里的必备单品,不仅款式多样,而且能够展现出女性的优雅魅力。
  • 保暖舒适羊毛大衣
    保暖舒适羊毛大衣
    2024-01-05
    保暖舒适羊毛大衣.冬季来临,寒冷的天气让人们更加注重保暖。在这个时候,一件保暖舒适的羊毛大衣成为了许多人的首选。羊毛大衣
  • 萌娃配饰套装,包包、帽子、围巾等,增添宝宝的时尚气息
    萌娃配饰套装,包包、帽子、围巾等
    2024-01-20
    萌娃配饰套装,为宝宝增添时尚气息.宝宝是家庭的小太阳,****们都希望给他们最好的一切。随着时尚的发展,宝宝的时尚潮流也
  • 轻盈雪纺衬衫,打造清新淑女形象
    轻盈雪纺衬衫,打造清新淑女形象
    2023-12-31
    轻盈雪纺衬衫,打造清新淑女形象.雪纺材质的衬衫一直以来都是清新淑女形象的代表,它轻盈飘逸的质地,柔软透气的触感,让人仿佛