Python'da çoklu roc eğrileri nasıl çizilir (örnekle)
Makine öğreniminde sınıflandırma modellerinin performansını görselleştirmenin bir yolu, “alıcı çalışma karakteristiği” eğrisi anlamına gelen bir ROC eğrisi oluşturmaktır.
Çoğu zaman, birden fazla sınıflandırma modelini tek bir veri kümesine sığdırmak ve hangi modelin verilerde en iyi performansı gösterdiğini görselleştirmek için her model için bir ROC eğrisi oluşturmak isteyebilirsiniz.
Aşağıdaki adım adım örnek, Python’da birden fazla ROC eğrisinin nasıl çizileceğini gösterir.
Adım 1: Gerekli paketleri içe aktarın
Öncelikle gerekli birkaç paketi Python’a aktaracağız:
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
2. Adım: Sahte Veri Oluşturun
Daha sonra, 1000 satır, dört öngörücü değişken ve bir ikili yanıt değişkeni içeren sahte bir veri kümesi oluşturmak için sklearn’in make_classification() işlevini kullanacağız:
#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 )
Adım 3: Birden Fazla Modeli Sığdırın ve ROC Eğrilerini Çizin
Daha sonra, verilere bir lojistik regresyon modeli ve ardından gradyanla geliştirilmiş bir model yerleştireceğiz ve her model için ROC eğrisini aynı çizim üzerinde çizeceğiz:
#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 ()
Mavi çizgi lojistik regresyon modeli için ROC eğrisini, turuncu çizgi ise gradyan destekli model için ROC eğrisini gösterir.
ROC eğrisi grafiğin sol üst köşesine ne kadar yakın olursa, model verileri kategorilere göre o kadar iyi sınıflandırabilir.
Bunu ölçmek için, bize grafiğin ne kadarının eğrinin altında olduğunu söyleyen AUC’yi (eğrinin altındaki alanı) hesaplayabiliriz.
AUC 1’e ne kadar yakınsa model o kadar iyidir.
Grafiğimizde her model için aşağıdaki AUC ölçümlerini görebiliriz:
- Lojistik regresyon modelinin AUC’si: 0,7902
- Gradyan destekli modelin AUC’si: 0,9712
Açıkçası, gradyanla geliştirilmiş model, verileri kategorilere ayırmada lojistik regresyon modelinden daha başarılıdır.
Ek kaynaklar
Aşağıdaki eğitimler sınıflandırma modelleri ve ROC eğrileri hakkında ek bilgi sağlar:
Lojistik Regresyona Giriş
ROC Eğrisi Nasıl Yorumlanır (Örneklerle)
İyi bir AUC puanı nedir?