Если вы сформулируете определения точности (например, положительное прогнозирующее значение PPV) и вспомните (или чувствительность), вы увидите, что они относятся к одному классу, независимому от любых других классов:
Напомним, или чувствительность - это доля случаев, правильно определенных как принадлежащих классу c, среди всех случаев, которые действительно принадлежат к классу c .
(Учитывая, что у нас есть случай, действительно принадлежащий « с », какова вероятность правильного прогнозирования?)
Точность или положительная прогностическая ценность PPV - это доля случаев, правильно определенных как принадлежащих к классу c, среди всех случаев, когда классификатор утверждает, что они принадлежат к классу c .
Другими словами, из тех случаев, которые, как предсказывают, принадлежат классу c , какая доля действительно принадлежит классу c ? (Учитывая предсказание « с », какова вероятность того, чтобы быть правильным?)
Отрицательное прогностическое значение NPV в тех случаях, которые, как прогнозировалось, не относятся к классу c , какая доля действительно не принадлежит классу c ? (Учитывая прогноз «не с », какова вероятность того, чтобы быть правильным?)
Таким образом, вы можете рассчитать точность и вспомнить для каждого из ваших классов. Для смешанных таблиц мультикласса это диагональные элементы, разделенные на суммы строк и столбцов соответственно:
Источник: Beleites, C .; Salzer, R. & Sergo, V. Проверка моделей мягкой классификации с использованием частичного членства в классе: расширенная концепция чувствительности & co. применяется для классификации тканей астроцитомы, Chemom Intell Lab Syst, 122, 12 - 22 (2013). DOI: 10.1016 / j.chemolab.2012.12.003
Сокращая данные до принудительного выбора (классификации) и не регистрируя, были ли какие-либо "близкие вызовы", вы получаете статистические оценки минимальной точности с минимальной информацией, в дополнение к тайному предположению о странной функции полезности / потерь / затрат и использовании произвольных пороговых значений. , Было бы гораздо лучше использовать максимум информации, которая включала бы вероятность членства в классе, а не принудительный выбор.
источник
Самый простой способ - вообще не использовать confusion_matrix. Использоватьification_report (), он даст вам все, что вам когда-либо нужно, ура ...
Изменить:
это формат для confusion_matrix ():
[[TP, FN]
[FP, TN]]
И отчет о классификации дает все это
источник
Если вы просто хотите получить результат, я бы посоветовал не слишком задумываться и использовать имеющиеся в вашем распоряжении инструменты. Вот как вы можете сделать это в Python;
Чтобы получить следующий вывод
источник
Ниже приведен пример мультиклассовой матрицы путаницы, предполагающей, что метками наших классов являются A, B и C.
A / P A B C Сумма
A 10 3 4 17
B 2 12 6 20
C 6 3 9 18
Сумма 18 18 19 55
Теперь мы вычислим три значения для Precision и Recall каждого и назовем их Pa, Pb и Pc; и аналогично Ra, Rb, Rc.
Мы знаем Точность = TP / (TP + FP), поэтому для истинного положительного значения Pa будет действительное значение A, прогнозируемое как A, т. Е. 10, остальные две ячейки в этом столбце, будь то B или C, делают False Positive. Так
Па = 10/18 = 0,55 Ra = 10/17 = 0,59
Теперь точность и отзыв для класса B - это Pb и Rb. Для класса B истинно положительным является фактический B, предсказанный как B, то есть ячейка, содержащая значение 12, а остальные две ячейки в этом столбце делают False Positive, поэтому
Pb = 12/18 = 0,67 Rb = 12/20 = 0,6
Аналогично Pc = 9/19 = 0,47 Rc = 9/18 = 0,5
Общая производительность классификатора будет определяться средней точностью и средним отзывом. Для этого мы умножаем значение точности для каждого класса на фактическое количество экземпляров для этого класса, затем добавляем их и делим их на общее количество экземпляров. Подобно ,
Средняя точность = (0,55 * 17 + 0,67 * 20 + 0,47 * 18) / 55 = 31,21 / 55 = 0,57 Среднее количество отзывов = (0,59 * 17 + 0,6 * 20 + 0,5 * 18) / 55 = 31,03 / 55 = 0,56
Я надеюсь, что это помогает
источник