Come creare una matrice di confusione in python


La regressione logistica è un tipo di regressione che possiamo utilizzare quando la variabile di risposta è binaria.

Un modo comune per valutare la qualità di un modello di regressione logistica è creare una matrice di confusione , ovvero una tabella 2 × 2 che mostra i valori previsti del modello rispetto ai valori effettivi del set di dati di test.

Per creare una matrice di confusione per un modello di regressione logistica in Python, possiamo usare la funzione confusion_matrix() dal pacchetto sklearn :

 from sklearn import metrics
metrics.metrics. confusion_matrix (y_actual, y_predicted)

L’esempio seguente mostra come utilizzare questa funzione per creare una matrice di confusione per un modello di regressione logistica in Python.

Esempio: creazione di una matrice di confusione in Python

Supponiamo di avere le seguenti due tabelle contenenti i valori effettivi di una variabile di risposta nonché i valori previsti da un modello di regressione logistica:

 #define array of actual values
y_actual = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]

#define array of predicted values
y_predicted = [0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1]

Possiamo usare la funzione confusion_matrix() di sklearn per creare una matrice di confusione per questi dati:

 from sklearn import metrics

#create confusion matrix
c_matrix = metrics. confusion_matrix (y_actual, y_predicted)

#print confusion matrix
print (c_matrix)

[[6 4]
 [2 8]]

Se vogliamo, possiamo usare la funzione crosstab() di Pandas per creare una matrice di confusione visivamente più accattivante:

 import pandas as pd

y_actual = pd. Series (y_actual, name=' Actual ')
y_predicted = pd. Series (y_predicted, name=' Predicted ')

#create confusion matrix
print (pd. crosstab (y_actual, y_predicted))

Predicted 0 1
Current         
0 6 4
1 2 8

Le colonne mostrano i valori previsti per la variabile di risposta e le righe mostrano i valori effettivi.

Possiamo anche calcolare accuratezza, precisione e richiamo utilizzando le funzioni nel pacchetto sklearn:

 #print accuracy of model
print ( metrics.accuracy_score (y_actual, y_predicted))

0.7

#print precision value of model
print ( metrics.precision_score (y_actual, y_predicted))

0.667

#print recall value of model
print (metrics. recall_score (y_actual, y_predicted))

0.8

Ecco un rapido aggiornamento su accuratezza, precisione e richiamo:

  • Precisione : percentuale di previsioni corrette
  • Precisione : correggere le previsioni positive rispetto al totale delle previsioni positive
  • Promemoria : correzione delle previsioni positive rispetto al totale dei positivi effettivi

Ed ecco come ciascuna di queste metriche è stata effettivamente calcolata nel nostro esempio:

  • Precisione : (6+8) / (6+4+2+8) = 0,7
  • Precisione : 8 / (8+4) = 0,667
  • Promemoria : 8 / (2+8) = 0,8

Risorse addizionali

Introduzione alla regressione logistica
I 3 tipi di regressione logistica
Regressione logistica vs regressione lineare

Aggiungi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *