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

Plotting already calculated Confusion Matrix using Python

我如何在 Python 中绘制一个类似于显示的 here 已经给定的混淆矩阵值的混淆矩阵?

在代码中,他们使用 sklearn.metrics.plot_confusion_matrix 方法,该方法根据基本事实和预测计算混淆矩阵。

但就我而言,我已经计算出了我的混淆矩阵。因此,例如,我的混淆矩阵是(百分比值):

[[0.612, 0.388]
 [0.228, 0.772]]

如果您为 sklearn.metrics.plot_confusion_matrix 检查 source,您可以看到如何处理数据以创建绘图。然后您可以重用构造函数 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()

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

可以在 Python 绘制 一个已经 的混淆矩阵 通过 mlxtend 包计算:

Mlxtend (machine learning extensions) is a Python library of useful tools for the day-to-day data science tasks.

代码段:

# 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()

输出将是:

我使用 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)

输出是这样的: