So berechnen sie die auc (fläche unter der kurve) in python
Die logistische Regression ist eine statistische Methode, die wir verwenden, um ein Regressionsmodell anzupassen, wenn die Antwortvariable binär ist.
Um zu bewerten, wie gut ein logistisches Regressionsmodell zu einem Datensatz passt, können wir uns die folgenden zwei Metriken ansehen:
- Sensitivität: Wahrscheinlichkeit, dass das Modell ein positives Ergebnis für eine Beobachtung vorhersagt, obwohl das Ergebnis tatsächlich positiv ist. Dies wird auch als „True-Positive-Rate“ bezeichnet.
- Spezifität: Die Wahrscheinlichkeit, dass das Modell ein negatives Ergebnis für eine Beobachtung vorhersagt, obwohl das Ergebnis tatsächlich negativ ist. Dies wird auch als „echte Negativrate“ bezeichnet.
Eine Möglichkeit, diese beiden Messungen zu visualisieren, besteht darin, eine ROC-Kurve zu erstellen, die für „Receiver Operating Characteristic“-Kurve steht.
Dies ist ein Diagramm, das die Sensitivität entlang der y-Achse und (1 – Spezifität) entlang der x-Achse anzeigt.
Eine Möglichkeit, die Wirksamkeit des logistischen Regressionsmodells bei der Klassifizierung von Daten zu quantifizieren, besteht in der Berechnung der AUC , die für „Fläche unter der Kurve“ steht.
Je näher die AUC bei 1 liegt, desto besser ist das Modell.
Das folgende Schritt-für-Schritt-Beispiel zeigt, wie die AUC für ein logistisches Regressionsmodell in Python berechnet wird.
Schritt 1: Pakete importieren
Zuerst importieren wir die notwendigen Pakete, um eine logistische Regression in Python durchzuführen:
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
Schritt 2: Passen Sie das logistische Regressionsmodell an
Als Nächstes importieren wir einen Datensatz und passen ein logistisches Regressionsmodell daran an:
#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)
Schritt 3: Berechnen Sie die AUC
Wir können die Funktion metrics.roc_auc_score() verwenden, um die AUC des Modells zu berechnen:
#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
Die AUC (Fläche unter der Kurve) für dieses spezielle Modell beträgt 0,5602 .
Denken Sie daran, dass ein Modell mit einem AUC-Wert von 0,5 nicht besser ist als ein Modell, das zufällige Schätzungen anstellt.
Daher würde in den meisten Fällen ein Modell mit einem AUC-Wert von 0,5602 als schlecht bei der Klassifizierung von Beobachtungen in die richtigen Klassen angesehen werden.
Zusätzliche Ressourcen
Die folgenden Tutorials bieten zusätzliche Informationen zu ROC-Kurven und AUC-Scores:
So interpretieren Sie eine ROC-Kurve (mit Beispielen)
Was gilt als guter AUC-Wert?