plot_confusion_matrix без оценщика - PullRequest
0 голосов
/ 20 марта 2020

Я пытаюсь использовать plot_confusion_matrix,

from sklearn.metrics import confusion_matrix

y_true = [1, 1, 0, 1]
y_pred = [1, 1, 0, 0]

confusion_matrix(y_true, y_pred)

Вывод:

array([[1, 0],
       [1, 2]])

Теперь, используя следующие; используя «классы» или без «классов»

from sklearn.metrics import plot_confusion_matrix

plot_confusion_matrix(y_true, y_pred, classes=[0,1], title='Confusion matrix, without normalization')

или

plot_confusion_matrix(y_true, y_pred, title='Confusion matrix, without normalization')

Я ожидаю получить аналогичный вывод, как это, за исключением чисел внутри,

enter image description here

При построении простой диаграммы не требуется оценщик.

При использовании mlxtend.plotting,

from mlxtend.plotting import plot_confusion_matrix
import matplotlib.pyplot as plt
import numpy as np

binary1 = np.array([[4, 1],
                   [1, 2]])

fig, ax = plot_confusion_matrix(conf_mat=binary1)
plt.show()

Обеспечивает тот же вывод.

На основании этого

требуется классификатор,

disp = plot_confusion_matrix(classifier, X_test, y_test,
                                 display_labels=class_names,
                                 cmap=plt.cm.Blues,
                                 normalize=normalize)

Можно ли построить его без классификатора?

Ответы [ 2 ]

2 голосов
/ 20 марта 2020

plot_confusion_matrix ожидает обученного классификатора. Если вы посмотрите на исходный код , то он выполняет прогноз для вас, чтобы сгенерировать y_pred:

y_pred = estimator.predict(X)
    cm = confusion_matrix(y_true, y_pred, sample_weight=sample_weight,
                          labels=labels, normalize=normalize)

Итак, чтобы построить матрицу путаницы без указания классификатор , вам придется go с помощью какого-либо другого инструмента или сделать это самостоятельно. Простой вариант - использовать морского происхождения:

import seaborn as sns

cm = confusion_matrix(y_true, y_pred)
f = sns.heatmap(cm, annot=True)

enter image description here

1 голос
/ 20 марта 2020

Поскольку plot_confusion_matrix требует, чтобы аргумент 'оценщик' не был None, ответ: нет, вы не можете. Но вы можете построить свою матрицу путаницы другими способами, например, посмотрите на этот ответ: Как я могу построить матрицу путаницы?

...