使用Python绘制已经计算好的混淆矩阵

7

如何在Python中绘制混淆矩阵,类似于这里所示的混淆矩阵,并使用给定的混淆矩阵值进行绘制?

在代码中,他们使用sklearn.metrics.plot_confusion_matrix方法基于真实结果和预测计算混淆矩阵。

但是在我的情况下,我已经计算出了我的混淆矩阵。例如,我的混淆矩阵为(以百分比表示):

[[0.612, 0.388]
 [0.228, 0.772]]
3个回答

8

我看到已经有人回答了这个问题,但我添加了一个新的答案,可能对作者或其他用户有用。

Python 中,可以使用 mlxtend 包计算后的已知混淆矩阵来进行绘图:

Mlxtend(机器学习扩展)是一个Python库,提供了日常数据科学任务中有用的工具。

代码段:

# Imports
from mlxtend.plotting import plot_confusion_matrix
import matplotlib.pyplot as plt
import numpy as np

# Your Confusion Matrix
cm = np.array([[0.612, 0.388],
               [0.228, 0.772]])

# Classes
classes = ['class A', 'class B']

figure, ax = plot_confusion_matrix(conf_mat = cm,
                                   class_names = classes,
                                   show_absolute = False,
                                   show_normed = True,
                                   colorbar = True)

plt.show()

输出结果将是:

输入图像描述


嘘,figure 应该改为 fig - tumultous_rooster

6
如果您查看sklearn.metrics.plot_confusion_matrix源代码,可以看到数据是如何处理以创建绘图的。 然后,您可以重复使用构造函数ConfusionMatrixDisplay并绘制自己的混淆矩阵。
import matplotlib.pyplot as plt
from sklearn.metrics import ConfusionMatrixDisplay

cm = [0.612, 0.388, 0.228, 0.772] # your confusion matrix
ls = [0, 1] # your y labels
disp = ConfusionMatrixDisplay(confusion_matrix=cm, display_labels=ls)
disp.plot(include_values=include_values, cmap=cmap, ax=ax, xticks_rotation=xticks_rotation)
plt.show()

当我运行时,出现了关于形状未定义的错误。我将混淆矩阵行重写为cm = np.array([[tn,fp], [fn,tp]]),其中我将其转换为numpy数组。我还创建了代表真假阳性和阴性的变量。 - Jimbo

3
我使用 seaborn 的热力图。你可以定义一个方法:
import numpy as np
import seaborn as sns; sns.set_theme()
sns.set(font_scale=2)

def plot_matrix(cm, classes, title):
  ax = sns.heatmap(cm, cmap="Blues", annot=True, xticklabels=classes, yticklabels=classes, cbar=False)
  ax.set(title=title, xlabel="predicted label", ylabel="true label")

并使用:

cm = np.array([[0.612, 0.388], [0.228, 0.772]])
classes = ['class A', 'class B']
title = "title example"

plot_matrix(cm, classes, title)

输出结果如下: 这里输入图片描述

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接