使用 plot_confusion_matrix 绘制多个混淆矩阵

Posted

技术标签:

【中文标题】使用 plot_confusion_matrix 绘制多个混淆矩阵【英文标题】:Plot multiple confusion matrices with plot_confusion_matrix 【发布时间】:2020-07-15 20:56:09 【问题描述】:

我正在使用来自sklearn.metricsplot_confusion_matrix。我想像子图一样将这些混淆矩阵彼此相邻表示,我该怎么做?

【问题讨论】:

【参考方案1】:

让我们使用 good'ol iris 数据集来重现这一点,并拟合几个分类器来绘制它们各自的混淆矩阵与plot_confusion_matrix

from sklearn.ensemble import AdaBoostClassifier, GradientBoostingClassifier
from sklearn.svm import SVC
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from matplotlib import pyplot as plt
from sklearn.datasets import load_iris
from sklearn.metrics import plot_confusion_matrix

data = load_iris()
X = data.data
y = data.target

设置 -

X_train, X_test, y_train, y_test = train_test_split(X, y)
classifiers = [LogisticRegression(solver='lbfgs'), 
               AdaBoostClassifier(),
               GradientBoostingClassifier(), 
               SVC()]
for cls in classifiers:
    cls.fit(X_train, y_train)

因此,您可以一目了然地比较所有矩阵的方法是使用plt.subplots 创建一组子图。然后迭代轴对象和训练好的分类器(plot_confusion_matrix 期望作为输入)并绘制各个混淆矩阵:

fig, axes = plt.subplots(nrows=2, ncols=2, figsize=(15,10))

for cls, ax in zip(classifiers, axes.flatten()):
    plot_confusion_matrix(cls, 
                          X_test, 
                          y_test, 
                          ax=ax, 
                          cmap='Blues',
                         display_labels=data.target_names)
    ax.title.set_text(type(cls).__name__)
plt.tight_layout()  
plt.show()

【讨论】:

谢谢,这正是我想要的。

以上是关于使用 plot_confusion_matrix 绘制多个混淆矩阵的主要内容,如果未能解决你的问题,请参考以下文章

没有估计器的 plot_confusion_matrix

如何反转 Sklearn `plot_confusion_matrix` 函数中的混淆矩阵? [关闭]

TypeError: plot_confusion_matrix() 得到了一个意外的关键字参数“标题”

如何保存混淆矩阵图以便我可以调用它以供将来参考?

使用没有分类器的 scikit-learn 绘制混淆矩阵

测试使用