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?

Aggiungi un commento

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