Hoe auc (gebied onder de curve) in python te berekenen
Logistische regressie is een statistische methode die we gebruiken om een regressiemodel te fitten wanneer de responsvariabele binair is.
Om te evalueren hoe goed een logistisch regressiemodel bij een dataset past, kunnen we naar de volgende twee statistieken kijken:
- Gevoeligheid: waarschijnlijkheid dat het model een positief resultaat voorspelt voor een waarneming terwijl het resultaat daadwerkelijk positief is. Dit wordt ook wel het “echte positieve percentage” genoemd.
- Specificiteit: de kans dat het model een negatief resultaat voorspelt voor een waarneming terwijl het resultaat feitelijk negatief is. Dit wordt ook wel het ‘echte negatieve tarief’ genoemd.
Eén manier om deze twee metingen te visualiseren is door een ROC-curve te maken, wat staat voor ‘receiver operating karakteristieke’-curve.
Dit is een grafiek die de gevoeligheid langs de y-as en (1 – specificiteit) langs de x-as weergeeft.
Eén manier om de effectiviteit van het logistische regressiemodel bij het classificeren van gegevens te kwantificeren is door de AUC te berekenen, wat staat voor ‚area under the curve‘.
Hoe dichter de AUC bij 1 ligt, hoe beter het model.
In het volgende stapsgewijze voorbeeld ziet u hoe u de AUC voor een logistisch regressiemodel in Python kunt berekenen.
Stap 1: Pakketten importeren
Eerst zullen we de benodigde pakketten importeren om logistieke regressie in Python uit te voeren:
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
Stap 2: Pas het logistische regressiemodel aan
Vervolgens importeren we een dataset en passen we er een logistisch regressiemodel aan toe:
#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)
Stap 3: Bereken de AUC
We kunnen de functie metrics.roc_auc_score() gebruiken om de AUC van het model te berekenen:
#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
De AUC (area under curve) voor dit specifieke model is 0,5602 .
Bedenk dat een model met een AUC-score van 0,5 niet beter is dan een model dat willekeurige gissingen doet.
In de meeste gevallen zou een model met een AUC-score van 0,5602 dus als slecht worden beschouwd in het classificeren van waarnemingen in de juiste klassen.
Aanvullende bronnen
De volgende tutorials bieden aanvullende informatie over ROC-curven en AUC-scores:
Een ROC-curve interpreteren (met voorbeelden)
Wat wordt beschouwd als een goede AUC-score?