Как показать точность в матрице путаницы - PullRequest
0 голосов
/ 11 мая 2019

Я использую Scikit Learn, и я хочу показать точность в форме матрицы путаницы. Итак, у меня есть эта матрица путаницы:

array([[1266,   45,    6],
       [  25, 1507,   19],
       [  36,   82,  858]], dtype=int64)

И я применил этот код, из другого поста здесь:

cm = cm.astype('float') / cm.sum(axis=1)[:, np.newaxis]

И вывод был:

array([[0.96127563, 0.03416856, 0.00455581],
       [0.01611863, 0.97163121, 0.01225016],
       [0.03688525, 0.08401639, 0.87909836]])

Однако это отзыв, а не точность. Как я могу заставить его показать точность?

Ответы [ 2 ]

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

Ответ за точность будет

import numpy as np
precision = np.diag(cm) / np.sum(cm, axis = 0)

Точность равна TP/(TP+FP), следовательно, диагональное значение, которое является истинным положительным значением и суммой столбца.

Обновление 1: На основании вашего комментария

precision = []
for x in np.nditer(cm):
    precision.append(x / np.sum(cm, axis = 0))
0 голосов
/ 11 мая 2019

нашел его, просто измени ось = 0 вместо оси = 1

cm = cm.astype('float') / cm.sum(axis=0)[:, np.newaxis]

хорошо, но есть проблема в этом коде, у меня есть такой вывод:

array([[0.954, 0.034, 0.005],
       [0.015, 0.922, 0.012],
       [0.041, 0.093, 0.972]])

А когда вы суммируете любую строку, она должна равняться 1, но это не так.

решаемые

Используйте это:

C / C.astype(np.float).sum(axis=0)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...