Краткий ответ В двоичной классификации при использовании аргумента labels
,
confusion_matrix([0, 1, 0, 1], [1, 1, 1, 0], labels=[0,1]).ravel()
метки классов 0
и 1
рассматриваются как Negative
и Positive
соответственно.Это связано с порядком, подразумеваемым списком, а не с алфавитно-цифровым порядком.
Проверка: Рассмотрим метки класса дисбаланса, например: (используя класс дисбаланса дляразличие легче)
>>> y_true = [0,0,0,1,0,0,0,0,0,1,0,0,1,0,0,0]
>>> y_pred = [0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0]
>>> table = confusion_matrix(y_true, y_pred, labeels=[0,1]).reval()
это даст вам таблицу путаницы следующим образом:
>>> table
array([12, 1, 2, 1])
, что соответствует:
Actual
| 1 | 0 |
___________________
pred 1 | TP=1 | FP=1 |
0 | FN=2 | TN=12|
, где FN=2
означаетчто в двух случаях модель прогнозировала выборку как отрицательную (т. е. 0
), но фактическая метка была положительной (т. е. 1
), следовательно, ложное отрицание равно 2.
Аналогично для TN=12
, в 12 случаях модель правильно предсказала отрицательный класс (0
), следовательно, True Negative равен 12.
Таким образом, все складывается в предположении, что sklearn
считает первую метку (в labels=[0,1]
)как отрицательный класс. Поэтому здесь 0
, первая метка, представляет отрицательный класс.