Python 用Plot_consusion_矩阵绘制多个混淆矩阵

Python 用Plot_consusion_矩阵绘制多个混淆矩阵,python,matplotlib,machine-learning,scikit-learn,seaborn,Python,Matplotlib,Machine Learning,Scikit Learn,Seaborn,我正在使用sklearn.metrics中的plot\u composition\u matrix。我想将这些混淆矩阵表示为相邻的子图,我如何才能做到这一点?让我们使用good'ol iris数据集来重现这一点,并将几个分类器装配起来,以绘制它们各自的混淆矩阵: 设立- X_train, X_test, y_train, y_test = train_test_split(X, y) classifiers = [LogisticRegression(solver='lbfgs'),

我正在使用
sklearn.metrics
中的
plot\u composition\u matrix
。我想将这些混淆矩阵表示为相邻的子图,我如何才能做到这一点?

让我们使用good'ol iris数据集来重现这一点,并将几个分类器装配起来,以绘制它们各自的混淆矩阵:

设立-

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)
因此,你可以在一个简单的场景中比较所有矩阵的方法,就是创建一组子图。然后在Axis对象和经过训练的分类器上迭代(
plot\u consolution\u 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()


谢谢,这正是我想要的。
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()