在 Python 中绘制混淆矩阵

Jay Shaw 2024年2月15日
  1. 在 Python 中使用 Matplotlib 绘制混淆矩阵
  2. 在 Python 中使用 Seaborn 绘制混淆矩阵
  3. 在 Python 中使用 Pretty Confusion Matrix 绘制混淆矩阵
在 Python 中绘制混淆矩阵

本文将讨论使用不同的库包在 Python 中绘制混淆矩阵。

在 Python 中使用 Matplotlib 绘制混淆矩阵

这个程序展示了我们如何使用 Matplotlib 绘制混淆矩阵。

下面是我们绘制混淆矩阵所需的两个库包。

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

导入必要的包后,我们需要根据给定的数据创建混淆矩阵。

首先,我们声明变量 y_truey_predy-true 填充实际值,而 y-pred 填充预测值。

y_true = ["bat", "ball", "ball", "bat", "bat", "bat"]
y_pred = ["bat", "bat", "ball", "ball", "bat", "bat"]

然后我们声明一个变量 mat_con 来存储矩阵。下面是我们将用来创建混淆矩阵的语法。

mat_con = confusion_matrix(y_true, y_pred, labels=["bat", "ball"])

它告诉程序用两个参数 y_truey_pred 创建一个混淆矩阵。labels 告诉程序混淆矩阵将由两个输入值组成,bat 和 ball。

要绘制混淆矩阵,我们还需要指出指导程序创建绘图所需的属性。

fig, px = plt.subplots(figsize=(7.5, 7.5))
px.matshow(mat_con, cmap=plt.cm.YlOrRd, alpha=0.5)

plt.subplots() 在系统中创建一个空图 px,而 figsize=(7.5, 7.5) 决定输出窗口的 x 和 y 长度。相等的 x 和 y 值将在完全平方的窗口上显示你的图。

px.matshow 用于在空白图中填充我们的混淆矩阵,而 cmap=plt.cm.YlOrRd 指示程序用黄红色渐变填充列。

alpha=0.5 用于决定渐变的深度或黄色和红色的深浅程度。

然后,我们运行一个嵌套循环,以 2X2 格式绘制我们的混淆矩阵。

for m in range(mat_con.shape[0]):
    for n in range(mat_con.shape[1]):
        px.text(x=m, y=n, s=mat_con[m, n], va="center", ha="center", size="xx-large")

for m in range(mat_con.shape[0]): 为行数运行循环,(shape[0] 代表行数)。for n in range(mat_con.shape[1]): 在现有循环内运行另一个循环以获取存在的列数。

px.text(x=m,y=n,s=mat_con[m, n], va='center', ha='center', size='xx-large') 用行和列的值。

在最后一步中,我们使用 plt.xlabel()plt.ylabel() 来标记坐标轴,并使用语法 plt.title() 放置标题图。

plt.xlabel("Predictions", fontsize=16)
plt.ylabel("Actuals", fontsize=16)
plt.title("Confusion Matrix", fontsize=15)
plt.show()

综上所述,我们生成了下面的完整代码。

# imports
from sklearn.metrics import confusion_matrix
import matplotlib.pyplot as plt

# creates confusion matrix
y_true = ["bat", "ball", "ball", "bat", "bat", "bat"]
y_pred = ["bat", "bat", "ball", "ball", "bat", "bat"]
mat_con = confusion_matrix(y_true, y_pred, labels=["bat", "ball"])

# Setting the attributes
fig, px = plt.subplots(figsize=(7.5, 7.5))
px.matshow(mat_con, cmap=plt.cm.YlOrRd, alpha=0.5)
for m in range(mat_con.shape[0]):
    for n in range(mat_con.shape[1]):
        px.text(x=m, y=n, s=mat_con[m, n], va="center", ha="center", size="xx-large")

# Sets the labels
plt.xlabel("Predictions", fontsize=16)
plt.ylabel("Actuals", fontsize=16)
plt.title("Confusion Matrix", fontsize=15)
plt.show()

输出:

在 Python 中使用 Matplotlib 绘制混淆矩阵图

在 Python 中使用 Seaborn 绘制混淆矩阵

使用 Seaborn 允许我们创建外观不同的图,而无需过多关注属性或创建嵌套循环。

下面是绘制我们的混淆矩阵所需的库包。

import seaborn as sebrn

如上一个程序所示,我们将使用 confusion_matrix() 方法创建一个混淆矩阵。

要创建绘图,我们将使用以下语法。

fx = sebrn.heatmap(conf_matrix, annot=True, cmap="turbo")

我们使用了 seaborn 热图。annot=True 用数据填充绘图;一个 False 值将导致一个没有值的图。

cmap='turbo' 代表颜色阴影;我们可以从数十种不同的阴影中选择我们的图。

下面的代码将标记我们的轴并设置标题。

fx.set_title("Plotting Confusion Matrix using Seaborn\n\n")
fx.set_xlabel("\nValues model predicted")
fx.set_ylabel("True Values ")

最后,我们使用以下语法标记这些框。此步骤是可选的,但不使用它会降低矩阵的可见逻辑清晰度。

fx.xaxis.set_ticklabels(["False", "True"])
fx.yaxis.set_ticklabels(["False", "True"])

让我们把所有东西放在一个工作程序中。

# imports
import seaborn as sebrn
from sklearn.metrics import confusion_matrix
import matplotlib.pyplot as atlas

y_true = ["bat", "ball", "ball", "bat", "bat", "bat"]
y_pred = ["bat", "bat", "ball", "ball", "bat", "bat"]
conf_matrix = confusion_matrix(y_true, y_pred, labels=["bat", "ball"])

# Using Seaborn heatmap to create the plot
fx = sebrn.heatmap(conf_matrix, annot=True, cmap="turbo")

# labels the title and x, y axis of plot
fx.set_title("Plotting Confusion Matrix using Seaborn\n\n")
fx.set_xlabel("Predicted Values")
fx.set_ylabel("Actual Values ")

# labels the boxes
fx.xaxis.set_ticklabels(["False", "True"])
fx.yaxis.set_ticklabels(["False", "True"])

atlas.show()

输出:

在 Python 中使用 Seaborn 绘制混淆矩阵图

在 Python 中使用 Pretty Confusion Matrix 绘制混淆矩阵

Pretty Confusion Matrix 是一个 Python 库,用于绘制一个令人惊叹的混淆矩阵,其中包含大量与指标相关的数据。在为你的数据集创建高度详细的混淆矩阵时,此 ​​Python 库非常有用。

在下面的程序中,我们使用两组数组绘制了一个混淆矩阵:true_valuespredicted_values。正如我们所见,通过 Pretty Confusion Matrix 进行绘图比其他绘图库相对简单。

from pretty_confusion_matrix import pp_matrix_from_data

true_values = [1, 0, 0, 1, 0, 0, 1, 0, 0, 1]
predicted_values = [1, 0, 0, 1, 0, 1, 0, 0, 1, 1]

cmap = "PuRd"
pp_matrix_from_data(true_values, predicted_values)

输出:

在 Python 中使用 Pretty Confusion Matrix 绘制混淆矩阵图