Почему моя матрица путаницы возвращает только одно число?

#python #scikit-learn #confusion-matrix

#python #scikit-learn #путаница-матрица

Вопрос:

Я делаю двоичную классификацию. Всякий раз, когда мое предсказание равно основной истине, я считаю sklearn.metrics.confusion_matrix , что возвращаю одно значение. Нет ли проблемы?

 from sklearn.metrics import confusion_matrix
print(confusion_matrix([True, True], [True, True])
# [[2]]
 

Я ожидал бы чего-то вроде:

 [[2 0]
 [0 0]]
 

Ответ №1:

Вы должны заполнить labels=[True, False] :

 from sklearn.metrics import confusion_matrix

cm = confusion_matrix(y_true=[True, True], y_pred=[True, True], labels=[True, False])
print(cm)

# [[2 0]
#  [0 0]]
 

Почему?

Из документов следует, confusion_matrix(y_true, y_pred) что вывод:

C: ndarray формы (n_classes, n_classes)

Переменная n_classes является либо:

  • угадывается как количество уникальных значений в y_true или y_pred
  • берется из длины необязательных параметров labels

В вашем случае, поскольку вы не заполнили labels поле, переменная n_classes угадывается по количеству уникальных значений, в [True, True] которых равно 1. Отсюда и результат.

Ответ №2:

Вы получаете 1 число, потому что вы не указали свои метки. Я думаю, что этот код поможет вам получить true_positives, true negative, прецессию, отзыв, оценку f1 и т. Д

Код

 from sklearn import metrics

A     = [True, True]
B     = [True, True]
label = [True, False] 


# True positives and False Negatives
cm = metrics.confusion_matrix(y_true=A, y_pred=B, labels=label)
print(cm)

# Report (f1-score, precesion, recall, support)
report = metrics.classification_report([True, False], [False, True], digits=3,output_dict=True)
df = pd.DataFrame(report).transpose()
df
 

Результаты

 [[2 0]
 [0 0]]
 

введите описание изображения здесь

Комментарии:

1. Это явный дубликат моего ответа, опубликованного ранее, где я, по-видимому, также получил отрицательный результат. Насколько это возможно несправедливо?

2. Да! Я взял ваш ответ и изменил его для получения дополнительной информации

3. Но то, что вы добавили, не соответствует заданному вопросу.