Come tracciare più curve roc in python (con esempio)


Un modo per visualizzare le prestazioni deimodelli di classificazione nell’apprendimento automatico è creare una curva ROC , che sta per curva “caratteristica operativa del ricevitore”.

Spesso è possibile adattare più modelli di classificazione a un singolo set di dati e creare una curva ROC per ciascun modello per visualizzare quale modello offre le migliori prestazioni sui dati.

Il seguente esempio passo passo mostra come tracciare più curve ROC in Python.

Passaggio 1: importa i pacchetti necessari

Per prima cosa importeremo diversi pacchetti necessari in Python:

 from sklearn import metrics
from sklearn import datasets
from sklearn. model_selection import train_test_split
from sklearn. linear_model import LogisticRegression
from sklearn. set import GradientBoostingClassifier
import numpy as np
import matplotlib. pyplot as plt

Passaggio 2: crea dati falsi

Successivamente, utilizzeremo la funzione make_classification() di sklearn per creare un set di dati falso con 1000 righe, quattro variabili predittive e una variabile di risposta binaria:

 #create fake dataset
X, y = datasets. make_classification (n_samples= 1000 ,
                                    n_features= 4 ,
                                    n_informative= 3 ,
                                    n_redundant= 1 ,
                                    random_state= 0 )

#split dataset into training and testing set
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size= .3 , random_state= 0 )

Passaggio 3: adattare più modelli e tracciare le curve ROC

Successivamente, adatteremo ai dati un modello di regressione logistica e quindi un modello con gradiente migliorato e tracceremo la curva ROC per ciascun modello sullo stesso grafico:

 #set up plotting area
plt. Figure (0). clf ()

#fit logistic regression model and plot ROC curve
model = LogisticRegression()
model. fit (X_train, y_train)
y_pred = model. predict_proba (X_test)[:, 1]
fpr, tpr, _ = metrics. roc_curve (y_test, y_pred)
auc = round(metrics. roc_auc_score (y_test, y_pred), 4)
plt. plot (fpr,tpr,label="Logistic Regression, AUC="+str(auc))

#fit gradient boosted model and plot ROC curve
model = GradientBoostingClassifier()
model. fit (X_train, y_train)
y_pred = model. predict_proba (X_test)[:, 1]
fpr, tpr, _ = metrics. roc_curve (y_test, y_pred)
auc = round(metrics. roc_auc_score (y_test, y_pred), 4)
plt. plot (fpr,tpr,label="Gradient Boosting, AUC="+str(auc))

#add legend
plt. legend () 

tracciare più curve ROC in Python

La linea blu mostra la curva ROC per il modello di regressione logistica e la linea arancione mostra la curva ROC per il modello con gradiente potenziato.

Più una curva ROC si avvicina all’angolo superiore sinistro del grafico, migliore è la capacità del modello di classificare i dati in categorie.

Per quantificarlo, possiamo calcolare l’AUC – area sotto la curva – che ci dice quanta parte del grafico si trova sotto la curva.

Più l’AUC è vicino a 1, migliore è il modello.

Dal nostro grafico, possiamo vedere le seguenti metriche AUC per ciascun modello:

  • AUC del modello di regressione logistica: 0,7902
  • AUC del modello potenziato con gradiente: 0,9712

Ovviamente, il modello potenziato dal gradiente ha più successo nel classificare i dati in categorie rispetto al modello di regressione logistica.

Risorse addizionali

Le seguenti esercitazioni forniscono informazioni aggiuntive sui modelli di classificazione e sulle curve ROC:

Introduzione alla regressione logistica
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 *