So zeichnen sie mehrere roc-kurven in python (mit beispiel)
Eine Möglichkeit, die Leistung von Klassifizierungsmodellen beim maschinellen Lernen zu visualisieren, besteht darin, eine ROC-Kurve zu erstellen, die für „Receiver Operating Characteristic“-Kurve steht.
Häufig möchten Sie möglicherweise mehrere Klassifizierungsmodelle an einen einzelnen Datensatz anpassen und für jedes Modell eine ROC-Kurve erstellen, um zu visualisieren, welches Modell bei den Daten am besten abschneidet.
Das folgende Schritt-für-Schritt-Beispiel zeigt, wie Sie mehrere ROC-Kurven in Python zeichnen.
Schritt 1: Importieren Sie die erforderlichen Pakete
Zuerst importieren wir mehrere notwendige Pakete 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
Schritt 2: Erstellen Sie gefälschte Daten
Als Nächstes verwenden wir die Funktion make_classification() von sklearn, um einen gefälschten Datensatz mit 1000 Zeilen, vier Prädiktorvariablen und einer binären Antwortvariablen zu erstellen:
#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 )
Schritt 3: Mehrere Modelle anpassen und ROC-Kurven zeichnen
Als Nächstes passen wir ein logistisches Regressionsmodell und dann ein Gradientenmodell an die Daten an und zeichnen die ROC-Kurve für jedes Modell im selben Diagramm auf:
#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 ()
Die blaue Linie zeigt die ROC-Kurve für das logistische Regressionsmodell und die orangefarbene Linie zeigt die ROC-Kurve für das Gradienten-Boost-Modell.
Je näher eine ROC-Kurve an der oberen linken Ecke des Diagramms liegt, desto besser kann das Modell die Daten in Kategorien einteilen.
Um dies zu quantifizieren, können wir die AUC – Fläche unter der Kurve – berechnen, die uns sagt, wie viel von der Handlung unter der Kurve liegt.
Je näher die AUC bei 1 liegt, desto besser ist das Modell.
Aus unserem Diagramm können wir die folgenden AUC-Metriken für jedes Modell sehen:
- AUC des logistischen Regressionsmodells: 0,7902
- AUC des Gradienten-verstärkten Modells: 0,9712
Offensichtlich ist das Gradienten-erweiterte Modell bei der Klassifizierung der Daten in Kategorien erfolgreicher als das logistische Regressionsmodell.
Zusätzliche Ressourcen
Die folgenden Tutorials bieten zusätzliche Informationen zu Klassifizierungsmodellen und ROC-Kurven:
Einführung in die logistische Regression
So interpretieren Sie eine ROC-Kurve (mit Beispielen)
Was gilt als guter AUC-Wert?