Come calcolare l'auc (area sotto la curva) in python
La regressione logistica è un metodo statistico che utilizziamo per adattare un modello di regressione quando la variabile di risposta è binaria.
Per valutare quanto bene un modello di regressione logistica si adatta a un set di dati, possiamo esaminare i due parametri seguenti:
- Sensibilità: probabilità che il modello preveda un risultato positivo per un’osservazione quando il risultato è effettivamente positivo. Questo è anche chiamato il “vero tasso positivo”.
- Specificità: la probabilità che il modello preveda un risultato negativo per un’osservazione quando il risultato è effettivamente negativo. Questo è anche chiamato “vero tasso negativo”.
Un modo per visualizzare queste due misurazioni è creare una curva ROC , che sta per curva “caratteristica operativa del ricevitore”.
Questo è un grafico che mostra la sensibilità lungo l’asse y e (1 – specificità) lungo l’asse x.
Un modo per quantificare l’efficacia del modello di regressione logistica nella classificazione dei dati è calcolare l’AUC , che sta per “area sotto la curva”.
Più l’AUC è vicino a 1, migliore è il modello.
Il seguente esempio passo passo mostra come calcolare l’AUC per un modello di regressione logistica in Python.
Passaggio 1: importa i pacchetti
Per prima cosa importeremo i pacchetti necessari per eseguire la regressione logistica in Python:
import pandas as pd import numpy as np from sklearn. model_selection import train_test_split from sklearn. linear_model import LogisticRegression from sklearn import metrics
Passaggio 2: adattare il modello di regressione logistica
Successivamente, importeremo un set di dati e adatteremo ad esso un modello di regressione logistica:
#import dataset from CSV file on Github
url = "https://raw.githubusercontent.com/Statorials/Python-Guides/main/default.csv"
data = pd. read_csv (url)
#define the predictor variables and the response variable
X = data[[' student ',' balance ',' income ']]
y = data[' default ']
#split the dataset into training (70%) and testing (30%) sets
X_train,X_test,y_train,y_test = train_test_split(X,y,test_size= 0.3 ,random_state= 0 )
#instantiate the model
log_regression = LogisticRegression()
#fit the model using the training data
log_regression. fit (X_train,y_train)
Passaggio 3: calcolare l’AUC
Possiamo usare la funzione metrics.roc_auc_score() per calcolare l’AUC del modello:
#use model to predict probability that given y value is 1
y_pred_proba = log_regression. predict_proba (X_test)[::, 1 ]
#calculate AUC of model
auc = metrics. roc_auc_score (y_test, y_pred_proba)
#print AUC score
print (auc)
0.5602104030579559
L’AUC (area sotto la curva) per questo particolare modello è 0,5602 .
Ricordiamo che un modello con un punteggio AUC pari a 0,5 non è migliore di un modello che effettua ipotesi casuali.
Pertanto, nella maggior parte dei casi, un modello con un punteggio AUC pari a 0,5602 sarebbe considerato inadeguato nel classificare le osservazioni nelle classi corrette.
Risorse addizionali
I seguenti tutorial forniscono informazioni aggiuntive sulle curve ROC e sui punteggi AUC:
Come interpretare una curva ROC (con esempi)
Cosa è considerato un buon punteggio AUC?