混淆矩阵 & 怎么实现可视化 ?

什么是混淆矩阵?

混淆矩阵(Confusion Matrix) 是用于评估分类模型性能的一种表格形式表示。它展示了模型在不同类别上的预测结果与实际标签之间的对应关系,用于衡量分类模型的准确性、召回率、精确率和F1值等指标。

混淆矩阵通常是一个N×N的矩阵,其中N是类别的数量。对于二分类问题,混淆矩阵如下图片所示:

在这里插入图片描述

在混淆矩阵中,每个单元格代表了不同的预测结果:

  • TP(True Positive): 预测为正类(Positive)且实际为正类的样本数量。
  • FN(False Negative): 预测为负类(Negative)但实际为正类的样本数量。
  • FP(False Positive): 预测为正类但实际为负类的样本数量。
  • TN(True Negative): 预测为负类且实际为负类的样本数量。

根据混淆矩阵,可以计算出各种分类性能指标:

  • 准确率(Accuracy): 分类正确的样本数占总样本数的比例,即 (TP + TN) / (TP + FN + FP + TN)。
  • 精确率(Precision): 在所有预测为正类的样本中,实际为正类的比例,即 TP / (TP + FP)。
  • 召回率(Recall): 在所有实际为正类的样本中,被正确预测为正类的比例,即 TP / (TP + FN)。
  • F1值(F1 Score): 综合考虑精确率和召回率的指标,是精确率和召回率的调和平均值,即 2 * (Precision * Recall) / (Precision + Recall)。

混淆矩阵可以提供详细的分类性能信息,帮助分析模型在不同类别上的表现,并选择适当的评估指标来评估分类模型的性能。

实现代码

import seaborn as sns
import matplotlib.pyplot as plt
from sklearn.metrics import confusion_matrix

# 实际标签
label = [1, 0, 0, 1, 1, 0, 1, 0, 1, 0]
# 模型输出
output = [1, 0, 1, 1, 0, 0, 1, 0, 0, 1]

# 计算混淆矩阵
cm = confusion_matrix(label, output)

# 从混淆矩阵中提取 TP、FN、FP、TN 的值
TP = cm[1, 1]
FN = cm[1, 0]
FP = cm[0, 1]
TN = cm[0, 0]

# 打印 TP、FN、FP、TN 的值
print("True Positive (TP):", TP)
print("False Negative (FN):", FN)
print("False Positive (FP):", FP)
print("True Negative (TN):", TN)

# 创建混淆矩阵热力图
plt.figure(figsize=(8, 6))
sns.heatmap(cm, annot=True, cmap='Blues', fmt='g', cbar=False, square=True)
plt.xlabel('Predicted')
plt.ylabel('Actual')
plt.title('Confusion Matrix')
plt.show()

在上述代码中,首先定义了实际标签 label 和模型输出 output,然后使用sklearn库中的 confusion_matrix 函数计算混淆矩阵并将结果存储在变量 cm 中。

接下来,使用 seabornheatmap 函数创建热力图。
设置参数:
annot=True: --------------------可以在热力图中显示具体数值
cmap=‘Blues’: -----------------设置颜色映射为蓝色调
fmt=‘g’: ---------------------------设置数值格式为普通数字
cbar=False: ---------------------隐藏颜色条
square=True: -------------------使热力图为正方形

最后,通过添加横轴标签、纵轴标签和标题,使用 plt.xlabel()、plt.ylabel() 和 plt.title() 函数来为图表添加标签和标题。

运行该代码,你将获得一个美观的混淆矩阵可视化图表。根据你的实际数据,可以适当调整代码中的变量和参数,以满足你的需求。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值