Jak wykreślić wiele krzywych roc w pythonie (z przykładem)


Jednym ze sposobów wizualizacji wydajności modeli klasyfikacji w uczeniu maszynowym jest utworzenie krzywej ROC , która oznacza krzywą „charakterystyki operacyjnej odbiornika”.

Często możesz chcieć dopasować wiele modeli klasyfikacji do jednego zbioru danych i utworzyć krzywą ROC dla każdego modelu, aby zwizualizować, który model najlepiej radzi sobie z danymi.

Poniższy przykład krok po kroku pokazuje, jak wykreślić wiele krzywych ROC w Pythonie.

Krok 1: Zaimportuj niezbędne pakiety

Najpierw zaimportujemy kilka niezbędnych pakietów do Pythona:

 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

Krok 2: Utwórz fałszywe dane

Następnie użyjemy funkcji make_classification() sklearna, aby utworzyć fałszywy zbiór danych zawierający 1000 wierszy, cztery zmienne predykcyjne i binarną zmienną odpowiedzi:

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

Krok 3: Dopasuj wiele modeli i wykreśl krzywe ROC

Następnie dopasujemy do danych model regresji logistycznej, a następnie model ze wzmocnionym gradientem i wykreślimy krzywą ROC dla każdego modelu na tym samym wykresie:

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

wykreśl wiele krzywych ROC w Pythonie

Niebieska linia przedstawia krzywą ROC dla modelu regresji logistycznej, a pomarańczowa linia przedstawia krzywą ROC dla modelu ze wzmocnionym gradientem.

Im bardziej krzywa ROC pasuje do lewego górnego rogu wykresu, tym lepiej model jest w stanie sklasyfikować dane w 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.

Z naszego wykresu możemy zobaczyć następujące wskaźniki AUC dla każdego modelu:

  • AUC modelu regresji logistycznej: 0,7902
  • AUC modelu wzmocnionego gradientem: 0,9712

Oczywiście model ze wzmocnieniem gradientowym jest skuteczniejszy w klasyfikacji danych na kategorie niż model regresji logistycznej.

Dodatkowe zasoby

Poniższe samouczki zawierają dodatkowe informacje na temat modeli klasyfikacji i krzywych ROC:

Wprowadzenie do regresji logistycznej
Jak interpretować krzywą ROC (z przykładami)
Co uważa się za dobry wynik AUC?

Dodaj komentarz

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