Как рассчитать сбалансированную точность в python с помощью sklearn
Сбалансированная точность — это показатель, который мы можем использовать для оценки производительности модели классификации .
Он рассчитывается следующим образом:
Сбалансированная точность = (Чувствительность + Специфичность) / 2
Золото:
- Чувствительность : «истинно положительный показатель» — процент положительных случаев, которые модель способна обнаружить.
- Специфичность : «истинно отрицательный показатель» — процент отрицательных случаев, которые модель способна обнаружить.
Этот показатель особенно полезен, когда два класса несбалансированы, то есть один класс появляется намного больше, чем другой.
Например, предположим, что спортивный аналитик использует модель логистической регрессии , чтобы предсказать, будут ли 400 баскетболистов из разных колледжей выбраны в НБА.
Следующая матрица путаницы суммирует прогнозы, сделанные моделью:
Чтобы рассчитать сбалансированную точность модели, мы сначала рассчитаем чувствительность и специфичность:
- Чувствительность : «истинно положительный уровень» = 15 / (15 + 5) = 0,75.
- Специфичность : «истинно отрицательный коэффициент» = 375 / (375 + 5) = 0,9868.
Затем мы можем рассчитать сбалансированную точность следующим образом:
- Сбалансированная точность = (Чувствительность + Специфичность) / 2
- Сбалансированная точность = (0,75 + 9868)/2
- Сбалансированная точность = 0,8684
Сбалансированная точность модели оказывается равной 0,8684 .
В следующем примере показано, как вычислить сбалансированную точность для этого конкретного сценария с помощью функции Balanced_accuracy_score() из библиотеки sklearn в Python.
Пример: расчет сбалансированной точности в Python
Следующий код показывает, как определить массив прогнозируемых классов и массив фактических классов, а затем вычислить сбалансированную точность модели в Python:
import numpy as np from sklearn. metrics import balanced_accuracy_score #define array of actual classes actual = np. repeat ([1, 0], repeats=[20, 380]) #define array of predicted classes pred = np. repeat ([1, 0, 1, 0], repeats=[15, 5, 5, 375]) #calculate balanced accuracy score balanced_accuracy_score(actual, pred) 0.868421052631579
Сбалансированная точность составляет 0,8684 . Это соответствует значению, которое мы рассчитали вручную ранее.
Примечание . Полную документацию по функции Balanced_accuracy_score() можно найти здесь .
Дополнительные ресурсы
Введение в сбалансированную точность
Как выполнить логистическую регрессию в Python
Как рассчитать оценку F1 в Python