Правильное название матрицы путаницы в scikit - PullRequest
0 голосов
/ 10 июля 2019

Позвольте мне иметь в виду следующие тестовые значения:

y_test2 = [0, 0, 1, 1]

и следующие прогнозные значения:

y_pred2 = [1, 0, 1, 1]

Итак, у меня есть проблема двоичной классификации с {0,1} в качестве классов.Если я использую sklearn confusion_matrix:

confusion_matrix(y_test2, y_pred2)
array([[1, 1], #one 0 was predicted as 0 (TruePositive),  one 0 was predicted as 1 (FalseNegative)
       [0, 2]], dtype=int64) #two 1 were predicted as 1 (TrueNegatives)

Так что для меня это:

TP: 1
FN: 1
TN: 2
FP: 0

Однако, когда я запускаю confusion_matrix с ravel, следующий scikit изучает документацию:

tn, fp, fn, tp = confusion_matrix(y_test2, y_pred2).ravel()
(1, 1, 0, 2)

Почему Scikit интерпретирует 1 как Истинные значения?И почему это не упомянуто в документации: https://scikit -learn.org / stable / modules / generate / sklearn.metrics.confusion_matrix.html Есть ли еще какие-либо проблемы, с которыми я мог бы столкнуться при бинарной классификации ссоглашение об именовании?Есть ли шанс избежать этого?

1 Ответ

2 голосов
/ 10 июля 2019

Посмотрите описание в документации :

Таким образом, в двоичной классификации число истинных негативов равно C (0,0), ложных негативов - C (1)., 0), истинные положительные значения - это C (1,1), а ложные положительные значения - это C (0,1).

, поэтому из вашего массива

array([[1, 1], 
       [0, 2]], dtype=int64)

это

TN: 1
FN: 0
TP: 2
FP: 1
...