Как мне интерпретировать эту 10 * 10 матрицу путаницы? - PullRequest
2 голосов
/ 23 апреля 2020

У меня ниже путаница с 10 Y категориями. Как рассчитать точность для категорий A, D и E и найти TP, TM, FP, FN для каждой?

    A    B   C   D   E   F   G   H   I   J
   [41,  0,  0,  2,  1,  0,  0,  0,  0,  4],
   [ 1,  0,  0,  0,  4,  0,  0,  0,  0,  2],
   [ 3,  0, 12,  0,  1,  0,  0,  0,  0,  0],
   [ 0,  0,  0, 51, 10,  0,  0,  0,  0,  0],
   [ 1,  0,  0,  3, 78,  0,  0,  0,  0,  5],
   [ 1,  0,  0,  0,  0,  0,  0,  0,  0,  3],
   [ 4,  0,  0,  0,  2,  0,  5,  0,  0,  4],
   [ 0,  0,  1,  1,  3,  0,  0,  2,  0,  1],
   [ 4,  0,  0,  0,  1,  0,  0,  0,  0,  0],
   [10,  0,  0,  5, 15,  0,  0,  0,  0, 24]

Спасибо за помощь!

Ответы [ 2 ]

3 голосов
/ 23 апреля 2020

Визуализация вашей матрицы путаницы

X = [[41, 0, 0, 2, 1, 0, 0, 0, 0, 4],
 [1, 0, 0, 0, 4, 0, 0, 0, 0, 2],
 [3, 0, 12, 0, 1, 0, 0, 0, 0, 0],
 [0, 0, 0, 51, 10, 0, 0, 0, 0, 0],
 [1, 0, 0, 3, 78, 0, 0, 0, 0, 5],
 [1, 0, 0, 0, 0, 0, 0, 0, 0, 3],
 [4, 0, 0, 0, 2, 0, 5, 0, 0, 4],
 [0, 0, 1, 1, 3, 0, 0, 2, 0, 1],
 [4, 0, 0, 0, 1, 0, 0, 0, 0, 0],
 [10, 0, 0, 5, 15, 0, 0, 0, 0, 24]]

cm = pd.DataFrame(X, columns=list("ABCDEFGHIJ"), index=list("ABCDEFGHIJ")) 

print(cm)

Вывод:

    A  B   C   D   E  F  G  H  I   J
A  41  0   0   2   1  0  0  0  0   4
B   1  0   0   0   4  0  0  0  0   2
C   3  0  12   0   1  0  0  0  0   0
D   0  0   0  51  10  0  0  0  0   0
E   1  0   0   3  78  0  0  0  0   5
F   1  0   0   0   0  0  0  0  0   3
G   4  0   0   0   2  0  5  0  0   4
H   0  0   1   1   3  0  0  2  0   1
I   4  0   0   0   1  0  0  0  0   0
J  10  0   0   5  15  0  0  0  0  24

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

Здесь вы можете прочитать, что ваша модель иногда неверна. Он предсказал A 10 раз, когда ответ был на самом деле J ... Но это особенно хорошо для категории G: в пяти случаях это было предсказано, это всегда было правильно!

Точность категории

Точность категории достигается при подсчете того, сколько раз вы хорошо ее предсказали, среди всех предсказанных вами раз:

>>> cm["A"]["A"] / cm.sum(axis=0)["A"]                                                                                                               
0.6307692307692307

>>> cm["D"]["D"] / cm.sum(axis=0)["D"]                                                                                                               
0.8225806451612904

>>> cm["E"]["E"] / cm.sum(axis=0)["E"]                                                                                                               
0.6782608695652174

TP, TN, FP, FN для каждого

Эти меры обычно имеют смысл в бинарной классификации, но для данной категории вы можете себе представить, что вы находитесь в единой конфигурации (рассматривается как категория против всех остальных), которая выглядит как бинарная, следовательно, рассчитайте эти меры.

Воспользовавшись этим ответом , вы можете получить все значения TP, TN, FP, FN для каждой категории, используя следующее:

FP = cm.sum(axis=0) - np.diag(cm)   
FN = cm.sum(axis=1) - np.diag(cm) 
TP = pd.Series(np.diag(cm), index=list("ABCDEFGHIJ"))
TN = np.matrix(cm).sum() - (FP + FN + TP)  

Теперь FP для категория A - это:

>>> FP["A"]
24  #  you can verify, it's the sum of all values except diagonal element

Та же логика c применяется для всех других мер.

0 голосов
/ 23 апреля 2020

Чтобы добавить к другому ответу, истинно положительный и ложно положительный, а другие метрики имеют смысл только в контексте биномиальных ответов. На этой странице Википедии об этом чуть более подробно говорится:

Точность и отзыв

В приведенном выше случае вы не можете обязательно рассчитать общую ставку TP или FP, но вы можете вычислить «Ложь» и «Истина», и так далее, как обсуждалось в ответе выше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...