Como calcular o coeficiente de correlação de matthews em python
O Coeficiente de Correlação de Matthews (MCC) é uma métrica que podemos usar para avaliar o desempenho de um modelo de classificação .
É calculado da seguinte forma:
MCC = (TP*TN – FP*FN) / √ (TP+FP)(TP+FN)(TN+FP)(TN+FN)
Ouro:
- TP : Número de verdadeiros positivos
- TN : Número de verdadeiros negativos
- FP : Número de falsos positivos
- FN : Número de falsos negativos
Esta métrica é particularmente útil quando as duas classes estão desequilibradas, ou seja, uma classe aparece muito mais que a outra.
O valor de MCC está entre -1 e 1 onde:
- -1 indica discordância total entre as aulas previstas e as aulas reais
- 0 significa suposições completamente aleatórias
- 1 indica concordância completa entre as aulas previstas e as aulas reais
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 o MCC do modelo, podemos utilizar a seguinte fórmula:
- MCC = (TP*TN – FP*FN) / √ (TP+FP)(TP+FN)(TN+FP)(TN+FN)
- MCC = (15*375-5*5) / √ (15+5)(15+5)(375+5)(375+5)
- MCC = 0,7368
O coeficiente de correlação de Matthews é 0,7368 . Este valor é um pouco próximo de um, indicando que o modelo está fazendo um trabalho decente ao prever se os jogadores serão convocados ou não.
O exemplo a seguir mostra como calcular o MCC para este cenário específico usando a função matthews_corrcoef() da biblioteca sklearn em Python.
Exemplo: Calculando o Coeficiente de Correlação de Matthews 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 o coeficiente de correlação de Matthews de um modelo em Python:
import numpy as np from sklearn. metrics import matthews_corrcoef #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 Matthews correlation coefficient matthews_corrcoef(actual, pred) 0.7368421052631579
O MCC é 0,7368 . Isso corresponde ao valor que calculamos manualmente anteriormente.
Nota : Você pode encontrar a documentação completa da função matthews_corrcoef() aqui .
Recursos adicionais
Os tutoriais a seguir explicam como calcular outras métricas comuns para modelos de classificação em Python:
Uma introdução à regressão logística em Python
Como calcular a pontuação F1 em Python
Como calcular a precisão balanceada em Python