00258 混淆矩阵


前言

混淆矩阵.

Operating System: Ubuntu 22.04.4 LTS

参考文档

介绍

混淆矩阵(Confusion Matrix),也称为错误矩阵,是一种特别适用于监督学习的评估分类模型性能的工具,尤其是在分类问题中。混淆矩阵展示了实际类别与模型预测类别之间的关系。以下是混淆矩阵的基本组成部分:

混淆矩阵是一个 $2 \times 2$ 的矩阵,对于二分类问题,它的形式如下:

预测正类 预测负类
实际正类 TP(真正例) FN(假反例)
实际负类 FP(假正例) TN(真反例)

其中:

  • TP(True Positive):正确地预测了正类。
  • FN(False Negative):错误地将正类预测为负类。
  • FP(False Positive):错误地将负类预测为正类。
  • TN(True Negative):正确地预测了负类。

对于多分类问题,混淆矩阵会是一个 $n \times n$ 的矩阵,其中 $n$ 是类别的数量。矩阵的每一行代表实际类别,每一列代表预测类别。

以下是基于混淆矩阵可以计算的一些常用性能指标:

  • 准确率(Accuracy):$ \frac{TP + TN}{TP + TN + FP + FN} $
  • 精确率(Precision):$ \frac{TP}{TP + FP} $
  • 召回率(Recall)或真正例率(True Positive Rate, TPR):$ \frac{TP}{TP + FN} $
  • F1分数(F1 Score):$ 2 \times \frac{Precision \times Recall}{Precision + Recall} $
  • 假正例率(False Positive Rate, FPR):$ \frac{FP}{FP + TN} $

混淆矩阵为评估分类器性能提供了一个全面且直观的视角,帮助研究人员和工程师识别模型在哪些方面表现不佳,从而进行进一步的优化。

代码

混淆矩阵(Confusion Matrix)是评估分类模型性能的一种重要工具,它包含了四个基本指标:真正例(True Positive, TP)、假正例(False Positive, FP)、真反例(True Negative, TN)和假反例(False Negative, FN)。基于这四个指标,可以进一步计算出准确率(Accuracy)、精确率(Precision)、召回率(Recall)和F1分数(F1 Score)等性能指标。

以下是一个使用Python计算混淆矩阵四个基本指标的简单代码示例:

import numpy as np
# 假设以下为预测结果和真实标签
y_true = [1, 0, 1, 1, 0, 0, 1, 0, 0, 1]  # 真实标签
y_pred = [1, 0, 1, 0, 0, 0, 1, 1, 0, 1]  # 预测结果
# 计算混淆矩阵的四个指标
TP = sum(1 for i, j in zip(y_true, y_pred) if i == 1 and j == 1)
FP = sum(1 for i, j in zip(y_true, y_pred) if i == 0 and j == 1)
FN = sum(1 for i, j in zip(y_true, y_pred) if i == 1 and j == 0)
TN = sum(1 for i, j in zip(y_true, y_pred) if i == 0 and j == 0)
# 打印结果
print(f"真正例(TP): {TP}")
print(f"假正例(FP): {FP}")
print(f"假反例(FN): {FN}")
print(f"真反例(TN): {TN}")
# 进一步计算其他性能指标
accuracy = (TP + TN) / (TP + TN + FP + FN)
precision = TP / (TP + FP) if (TP + FP) > 0 else 0
recall = TP / (TP + FN) if (TP + FN) > 0 else 0
f1_score = 2 * precision * recall / (precision + recall) if (precision + recall) > 0 else 0
# 打印其他性能指标
print(f"准确率(Accuracy): {accuracy}")
print(f"精确率(Precision): {precision}")
print(f"召回率(Recall): {recall}")
print(f"F1分数(F1 Score): {f1_score}")

上述代码中,y_true是真实类别标签的列表,y_pred是模型预测的类别标签的列表。代码首先计算了混淆矩阵的四个基本指标,然后基于这四个指标计算了准确率、精确率、召回率和F1分数。需要注意的是,当分子为0时,精确率和召回率的计算需要特别处理以避免除以零的错误。

结语

第二百五十八篇博文写完,开心!!!!

今天,也是充满希望的一天。


文章作者: LuYF-Lemon-love
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 LuYF-Lemon-love !
  目录