Как рассчитать среднее TPR, TNR, FPR, FNR - мультиклассовая классификация - PullRequest
0 голосов
/ 30 января 2020

enter image description here как рассчитать средний TPR, TNR, FPR, FNR в случае несбалансированного набора данных?

пример FPR: [3.54224720e-04 0.00000000e + 00 1.59383505e-05 0.00000000e + 00] Итак, могу ли я вычислить сумму до 4 класса и разделить на 4?

TPR: [3.54224720e-04 + 0.00000000e + 00 + 1.59383505e-05 + 0.00000000e + 00] / 4 = 0.99966?

А как рассчитать 3.54224720e-04 равным .000354224720?

Спасибо

FP = np.sum(matrix, axis=0) - np.diag(matrix)
FN = np.sum(matrix, axis=1) - np.diag(matrix)
TP = np.diag(matrix)
TN = np.sum(matrix) - (FP + FN + TP)

# True Positive rate
TPR = TP/(TP+FN)
print("TPR:", TPR)
# True Negative Rate
TNR = TN/(TN+FP)
print("TNR:", TNR)
# False Positive Rate
FPR = FP/(FP+TN)
print("FPR:", FPR)
# False Negative Rate
FNR = FN/(TP+FN)
print("FNR:", FNR)

# Overall accuracy
ACC = (TP+TN)/(TP+FP+FN+TN)
print("ACC :", ACC)

1 Ответ

1 голос
/ 30 января 2020

Существуют разные способы измерения среднего показателя. если вы проверите пакеты, например, sklearn , вы увидите, что вы можете задать несколько параметров. либо микро, макро, взвешенный и т. д. c.

если вы хотите рассчитать их вручную, один из способов (микро) - получить разные значения TP, FN, FP и TN от четырех разных выходов и суммировать их вместе, а затем рассчитать ваши метрики.

Итак, вы должны действительно понять свою проблему и понять, какая из них имеет смысл. В основном, в случае несбалансированных данных, лучше использовать средневзвешенное значение. Имейте в виду, что если у вас есть какой-либо базовый расчет, вы должны использовать точно такой же метод для расчета этих значений, чтобы дать справедливое сравнение, поскольку между различными способами усреднения могут быть огромные различия.

и да, эти два числа равны.

Обновление:

Как видно из документации:

Средневзвешенное значение: рассчитать показатели для каждого ярлыка и найти их среднее значение, взвешенное по поддержке (количество истинных экземпляров). для каждого ярлыка). Это изменяет макрос для учета дисбаланса метки; это может привести к F-баллу, который не находится между точностью и отзывом.

этот вопрос также связан.

В вашем случае для взвешенных метрик, Вы рассчитываете каждый показатель c для каждого из ваших 4 классов в отдельности. имея количество экземпляров в каждом из классов, вы вычисляете средневзвешенное значение метри c. На этих рисунках показано уравнение для взвешенной точности:

enter image description here

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