Jak narysować krzywą roc w pythonie (krok po kroku)


Regresja logistyczna to metoda statystyczna, której używamy do dopasowania modelu regresji, gdy zmienna odpowiedzi jest binarna. Aby ocenić, jak dobrze model regresji logistycznej pasuje do zbioru danych, możemy przyjrzeć się następującym dwóm metrykom:

  • Czułość: prawdopodobieństwo, że model przewiduje pozytywny wynik obserwacji, gdy wynik jest rzeczywiście pozytywny. Nazywa się to również „prawdziwie dodatnią stopą procentową”.
  • Specyficzność: prawdopodobieństwo, że model przewiduje negatywny wynik obserwacji, gdy wynik jest faktycznie negatywny. Nazywa się to również „prawdziwie ujemną stopą”.

Jednym ze sposobów wizualizacji tych dwóch pomiarów jest utworzenie krzywej ROC , która oznacza krzywą „charakterystyki działania odbiornika”. To jest wykres przedstawiający czułość i swoistość modelu regresji logistycznej.

Poniższy przykład krok po kroku pokazuje, jak utworzyć i zinterpretować krzywą ROC w Pythonie.

Krok 1: Zaimportuj niezbędne pakiety

Najpierw zaimportujemy niezbędne pakiety, aby wykonać regresję logistyczną w Pythonie:

 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
import matplotlib. pyplot as plt

Krok 2: Dopasuj model regresji logistycznej

Następnie zaimportujemy zbiór danych i dopasujemy do niego model regresji logistycznej:

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

Krok 3: Narysuj krzywą ROC

Następnie obliczymy współczynnik prawdziwie dodatni i współczynnik fałszywie dodatni i utworzymy krzywą ROC za pomocą pakietu wizualizacji danych Matplotlib:

 #define metrics
y_pred_proba = log_regression. predict_proba (X_test)[::,1]
fpr, tpr, _ = metrics. roc_curve (y_test, y_pred_proba)

#create ROC curve
plt. plot (fpr,tpr)
plt. ylabel (' True Positive Rate ')
plt. xlabel (' False Positive Rate ')
plt. show () 

Im bardziej krzywa pasuje do lewego górnego rogu wykresu, tym lepiej model jest w stanie sklasyfikować dane w kategorie.

Jak widać na powyższym wykresie, ten model regresji logistycznej dość słabo radzi sobie z sortowaniem danych na kategorie.

Aby to określić ilościowo, możemy obliczyć AUC – obszar pod krzywą – który mówi nam, jaka część wykresu znajduje się pod krzywą.

Im AUC jest bliższe 1, tym lepszy model. Model z AUC równym 0,5 nie jest lepszy od modelu przeprowadzającego losową klasyfikację.

Krok 4: Oblicz AUC

Możemy użyć poniższego kodu do obliczenia AUC modelu i wyświetlenia go w prawym dolnym rogu wykresu ROC:

 #define metrics
y_pred_proba = log_regression. predict_proba (X_test)[::,1]
fpr, tpr, _ = metrics. roc_curve (y_test, y_pred_proba)
auc = metrics. roc_auc_score (y_test, y_pred_proba)

#create ROC curve
plt. plot (fpr,tpr,label=" AUC= "+str(auc))
plt. ylabel (' True Positive Rate ')
plt. xlabel (' False Positive Rate ')
plt. legend (loc=4)
plt. show () 

Okazuje się, że AUC tego modelu regresji logistycznej wynosi 0,5602 . Ponieważ liczba ta jest zamknięta do 0,5, potwierdza to, że model słabo radzi sobie z klasyfikacją danych.

Powiązane: Jak wykreślić wiele krzywych ROC w Pythonie

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *