Come calcolare il coefficiente di correlazione di matthews in python
Il coefficiente di correlazione di Matthews (MCC) è una metrica che possiamo utilizzare per valutare le prestazioni di unmodello di classificazione .
Viene calcolato come segue:
Centro clienti = (TP*TN – FP*FN) / √ (TP+FP)(TP+FN)(TN+FP)(TN+FN)
Oro:
- TP : Numero di veri positivi
- TN : numero di veri negativi
- FP : Numero di falsi positivi
- FN : Numero di falsi negativi
Questa metrica è particolarmente utile quando le due classi sono sbilanciate, ovvero una classe appare molto più dell’altra.
Il valore di MCC è compreso tra -1 e 1 dove:
- -1 indica un disaccordo totale tra le classi previste e le classi effettive
- 0 significa ipotesi completamente casuali
- 1 indica un completo accordo tra le classi previste e le classi effettive
Supponiamo, ad esempio, che un analista sportivo utilizzi un modello di regressione logistica per prevedere se 400 diversi giocatori di basket universitari verranno arruolati o meno nella NBA.
La seguente matrice di confusione riassume le previsioni fatte dal modello:
Per calcolare l’MCC del modello, possiamo utilizzare la seguente formula:
- Centro clienti = (TP*TN – FP*FN) / √ (TP+FP)(TP+FN)(TN+FP)(TN+FN)
- Centro clienti = (15*375-5*5) / √ (15+5)(15+5)(375+5)(375+5)
- Centro clienti = 0,7368
Il coefficiente di correlazione di Matthews risulta essere 0,7368 . Questo valore è piuttosto vicino a uno, indicando che il modello sta facendo un buon lavoro nel prevedere se i giocatori verranno scelti o meno.
L’esempio seguente mostra come calcolare il MCC per questo scenario specifico utilizzando la funzione matthews_corrcoef() della libreria sklearn in Python.
Esempio: calcolo del coefficiente di correlazione di Matthews in Python
Il codice seguente mostra come definire un array di classi previste e un array di classi effettive, quindi calcolare il coefficiente di correlazione Matthews di un modello in 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
Il MCC è 0,7368 . Questo corrisponde al valore che abbiamo calcolato manualmente in precedenza.
Nota : puoi trovare la documentazione completa per la funzione matthews_corrcoef() qui .
Risorse addizionali
I seguenti tutorial spiegano come calcolare altre metriche comuni per i modelli di classificazione in Python:
Un’introduzione alla regressione logistica in Python
Come calcolare il punteggio F1 in Python
Come calcolare la precisione bilanciata in Python