什么是混淆矩阵?

什么是混淆矩阵?混淆矩阵 ConfusionMat 是一种评估分类模型性能的工具 特别是在二分类和多分类任务中

混淆矩阵(Confusion Matrix)是一种评估分类模型性能的工具,特别是在二分类和多分类任务中。它以矩阵形式展示了模型预测结果的真实标签和预测标签之间的对比,帮助识别模型在哪些类别上表现良好,在哪些类别上可能出现问题。

对于二分类问题,混淆矩阵通常由4个部分组成:

  1. True Positives (TP):模型正确预测为正类的样本数量。
  2. True Negatives (TN):模型正确预测为负类的样本数量。
  3. False Positives (FP):模型错误地将负类预测为正类的样本数量,也称为“假阳性”。
  4. False Negatives (FN):模型错误地将正类预测为负类的样本数量,也称为“假阴性”。

混淆矩阵的结构可以表示为:

                 预测正类   预测负类
实际正类      [    TP         FN   ]
实际负类      [    FP         TN   ]

通过混淆矩阵,我们可以计算多种性能指标:

  • 准确率 (Accuracy):模型正确预测的比例,计算公式为 T P + T N T P + T N + F P + F N \frac{TP+TN}{TP+TN+FP+FN} TP+TN+FP+FNTP+TN
  • 精确率 (Precision):预测为正类的样本中实际为正类的比例,计算公式为 T P T P + F P \frac{TP}{TP+FP} TP+FPTP
  • 召回率 (Recall)灵敏度 (Sensitivity):实际为正类的样本中被正确预测为正类的比例,计算公式为 T P T P + F N \frac{TP}{TP+FN} TP+FNTP
  • F1分数 (F1 Score):精确率和召回率的调和平均,计算公式为 2 × Precision × Recall Precision + Recall 2\times\frac{\text{Precision}\times\text{Recall}}{\text{Precision}+\text{Recall}} 2×Precision+RecallPrecision×Recall

在使用Python进行混淆矩阵计算时,可以利用sklearn库中的confusion_matrix函数。下面是一个简单的例子:

from sklearn.metrics import confusion_matrix

# 假设y_true是实际标签,y_pred是模型预测的标签
y_true = [1, 0, 1, 1, 0, 1, 0, 0, 1, 0]
y_pred = [1, 0, 1, 0, 0, 1, 1, 0, 1, 0]

# 计算混淆矩阵
cm = confusion_matrix(y_true, y_pred)
print(cm)

对于三分类问题,混淆矩阵扩展为一个 3×3 的矩阵,其中每一行代表实际类别,每一列代表预测类别。矩阵中的每个单元格表示某一实际类别被预测为某一类别的样本数量。

假设我们有三个类别:A、B 和 C。混淆矩阵的结构如下:

                预测A   预测B   预测C
实际A        [    AA      AB      AC   ]
实际B        [    BA      BB      BC   ]
实际C        [    CA      CB      CC   ]
  • AA:实际为A,预测为A的数量(True Positives for A)。
  • AB:实际为A,预测为B的数量。
  • AC:实际为A,预测为C的数量。
  • BA:实际为B,预测为A的数量。
  • BB:实际为B,预测为B的数量(True Positives for B)。
  • BC:实际为B,预测为C的数量。
  • CA:实际为C,预测为A的数量。
  • CB:实际为C,预测为B的数量。
  • CC:实际为C,预测为C的数量(True Positives for C)。

从混淆矩阵中,我们可以计算每个类别的精确率、召回率和F1分数:

  • 精确率 (Precision):对每个类别 i,计算公式为 Predicted as iTrue Positives for i​。
  • 召回率 (Recall):对每个类别 i,计算公式为 Actual iTrue Positives for i​。
  • F1分数 (F1 Score):对每个类别 i,计算公式为 2×Precision+RecallPrecision×Recall​。

下面是一个如何使用Python的sklearn库计算三分类混淆矩阵的例子:

from sklearn.metrics import confusion_matrix

# 假设y_true是实际标签,y_pred是模型预测的标签
y_true = [0, 1, 2, 0, 1, 2, 0, 2, 1, 1]
y_pred = [0, 2, 1, 0, 0, 2, 1, 2, 1, 1]

# 计算混淆矩阵
cm = confusion_matrix(y_true, y_pred)

print(cm)
编程小号
上一篇 2025-01-12 10:21
下一篇 2025-01-12 10:11

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ji-chu/109224.html