Построить несколько матриц путаницы с plot_confusion_matrix - PullRequest
1 голос
/ 03 апреля 2020

Я использую plot_confusion_matrix из sklearn.metrics. Я хочу представить эти матрицы путаницы рядом друг с другом как подзаговоры, как я могу это сделать?

1 Ответ

2 голосов
/ 03 апреля 2020

Давайте воспользуемся набором данных 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()

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...