Путаница с матрицей склеарн ошибка? - PullRequest
0 голосов
/ 30 мая 2019

Я делал тест с sklearn.metrics.confusion_matrix, чтобы посмотреть, что произойдет, если в массиве прогнозирования есть класс, которого нет в метках и массивах отображения.Мой код:

from sklearn.metrics import confusion_matrix as cm

a = ["positive\n", "positive\n", "negative\n", "positive\n", "negative\n"]
b = ["negative\n", "negative\n", "don't\n", "negative\n", "negative\n"]
m = ["positive\n", "negative\n"]
c = cm(a, b, m)
TN, FP, FN, TP = c.ravel()

print(c)
print("")
print("{} {} {} {}\n".format(TN, FP, FN, TP))

Выход:

[[0 3]
 [0 1]]

0 3 0 1

Итак, класс don't пропущен.


Но если вы посмотрите на документация для версии v0.21.2, которую я установил, метод ravel() "должен" вывести значения матрицы путаницы, как я написал: TN, FP, FN, TP.Вывод моего print отличается.Кажется, что реальный выход ravel() перевернут: TP, FN, FP, TN.Правильна ли моя мысль?

1 Ответ

1 голос
/ 30 мая 2019

Нет ошибки.Вы определили метки:

m = ["positive\n", "negative\n"]

, поэтому "positive\n" отрицательно, а "negative\n" положительно.И результат соответствует вашей спецификации.

Если вы измените m таким образом:

m = ["negative\n", "positive\n"]

, вы получите:

1 0 3 0

для TN, FP, FN, TP соответственно.

...