📜  绘制混淆矩阵 - Python (1)

📅  最后修改于: 2023-12-03 14:56:52.308000             🧑  作者: Mango

绘制混淆矩阵 - Python

在机器学习和深度学习等领域中,混淆矩阵是一种用于评估分类算法性能的常用工具。它可以用于度量分类器在类别预测上的准确性,并可用于计算诸如精度、召回率、F1得分等指标。在Python编程语言中,有多种方法可以绘制混淆矩阵,本文将为您介绍其中一种基于matplotlib库的方法。

准备数据

在开始之前,我们需要准备一些测试数据,以便用于绘制混淆矩阵。下面我们使用sklearn库中的datasets模块生成一组随机的测试数据,并将其分为训练集和测试集。

from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split

X, y = make_classification(n_samples=2000, n_classes=2, random_state=42)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
训练模型和预测类别

接下来,我们需要训练一个基于支持向量机(SVM)的分类模型,并用该模型对测试集数据进行预测。以下是模型的训练和预测代码。

from sklearn.svm import SVC

model = SVC(kernel='linear', random_state=42)
model.fit(X_train, y_train)
y_pred = model.predict(X_test)
绘制混淆矩阵

现在我们已经有了测试集数据的真实类别和模型预测的类别,因此可以开始绘制混淆矩阵了。以下是绘制混淆矩阵的代码。

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

cm = confusion_matrix(y_test, y_pred)
classes = ['0', '1']

# 显示混淆矩阵
fig, ax = plt.subplots()
im = ax.imshow(cm, interpolation='nearest', cmap=plt.cm.Blues)
ax.figure.colorbar(im, ax=ax)
ax.set(xticks=np.arange(cm.shape[1]), yticks=np.arange(cm.shape[0]), xticklabels=classes, yticklabels=classes, xlabel='Predicted label', ylabel='True label')
plt.setp(ax.get_xticklabels(), rotation=45, ha="right", rotation_mode="anchor")

# 给混淆矩阵添加文本标签
thresh = cm.max() / 2.
for i in range(cm.shape[0]):
    for j in range(cm.shape[1]):
        ax.text(j, i, format(cm[i, j], 'd'), ha="center", va="center", color="white" if cm[i, j] > thresh else "black")

fig.tight_layout()
plt.show()

该代码将根据测试集数据的真实类别和模型预测的类别计算出混淆矩阵,并使用matplotlib.pyplot库将其绘制出来。绘图过程非常详细,通俗易懂,可以清楚地看到绘制混淆矩阵的所有细节。

下面是绘制出的混淆矩阵示例图。

Confusion matrix

总结

本文介绍了一种基于matplotlib库的Python代码,用于绘制混淆矩阵。无论您是在进行机器学习、深度学习还是其他相关领域的工作,混淆矩阵都是一种非常有用的工具,可以帮助您评估分类算法的性能。希望您能从本文中获得有关如何使用Python编程语言绘制混淆矩阵的宝贵知识。