Как рассчитать сбалансированную точность в Python с помощью sklearn

Как рассчитать сбалансированную точность в Python с помощью sklearn

Сбалансированная точность — это метрика, которую мы можем использовать для оценки производительности модели классификации .

Он рассчитывается как:

Сбалансированная точность = (Чувствительность + Специфичность) / 2

куда:

  • Чувствительность : «истинный положительный показатель» — процент положительных случаев, которые модель способна обнаружить.
  • Специфичность : «истинный отрицательный показатель» — процент отрицательных случаев, которые модель способна обнаружить.

Эта метрика особенно полезна, когда два класса несбалансированы, то есть один класс появляется намного больше, чем другой.

Например, предположим, что спортивный аналитик использует модель логистической регрессии, чтобы предсказать, попадут ли 400 разных баскетболистов из колледжа в НБА.

Следующая матрица путаницы суммирует прогнозы, сделанные моделью:

Чтобы рассчитать сбалансированную точность модели, мы сначала рассчитаем чувствительность и специфичность:

  • Чувствительность : «истинно положительный показатель» = 15/(15 + 5) = 0,75.
  • Специфичность : «Истинно отрицательный показатель» = 375 / (375 + 5) = 0,9868.

Затем мы можем рассчитать сбалансированную точность как:

  • Сбалансированная точность = (Чувствительность + Специфичность) / 2
  • Сбалансированная точность = (0,75 + 9868) / 2
  • Сбалансированная точность = 0,8684

Сбалансированная точность модели оказывается равной 0,8684 .

В следующем примере показано, как рассчитать сбалансированную точность для этого точного сценария с помощью функции balance_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.Это соответствует значению, которое мы рассчитали ранее вручную.

Примечание.Вы можете найти полную документацию по функции balance_accuracy_score() здесь .

Дополнительные ресурсы

Введение в сбалансированную точность
Как выполнить логистическую регрессию в Python
Как рассчитать счет F1 в Python

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.