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 () 

Zeichnen Sie mehrere ROC-Kurven in Python

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?

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert