Como calcular a precisão balanceada em python usando sklearn
A precisão equilibrada é uma métrica que podemos usar para avaliar o desempenho de um modelo de classificação .
É calculado da seguinte forma:
Precisão Balanceada = (Sensibilidade + Especificidade) / 2
Ouro:
- Sensibilidade : A “taxa de verdadeiros positivos” – a porcentagem de casos positivos que o modelo é capaz de detectar.
- Especificidade : A “taxa de verdadeiros negativos” – a porcentagem de casos negativos que o modelo é capaz de detectar.
Esta métrica é particularmente útil quando as duas classes estão desequilibradas, ou seja, uma classe aparece muito mais que a outra.
Por exemplo, suponha que um analista esportivo use um modelo de regressão logística para prever se 400 jogadores diferentes de basquete universitário serão ou não convocados para a NBA.
A seguinte matriz de confusão resume as previsões feitas pelo modelo:
Para calcular a precisão balanceada do modelo, primeiro calcularemos a sensibilidade e a especificidade:
- Sensibilidade : A “taxa de verdadeiro positivo” = 15 / (15 + 5) = 0,75
- Especificidade : A “taxa verdadeiramente negativa” = 375 / (375 + 5) = 0,9868
Podemos então calcular a precisão balanceada da seguinte forma:
- Precisão Balanceada = (Sensibilidade + Especificidade) / 2
- Precisão balanceada = (0,75 + 9868) / 2
- Precisão balanceada = 0,8684
A precisão balanceada do modelo é 0,8684 .
O exemplo a seguir mostra como calcular a precisão balanceada para este cenário específico usando a função Balanced_accuracy_score() da biblioteca sklearn em Python.
Exemplo: calculando a precisão balanceada em Python
O código a seguir mostra como definir uma matriz de classes previstas e uma matriz de classes reais e, em seguida, calcular a precisão balanceada de um modelo em 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
A precisão balanceada é 0,8684 . Isso corresponde ao valor que calculamos manualmente anteriormente.
Observação : você pode encontrar a documentação completa da função Balanced_accuracy_score() aqui .
Recursos adicionais
Uma introdução à precisão balanceada
Como realizar regressão logística em Python
Como calcular a pontuação F1 em Python