Python'da auc (eğrinin altındaki alan) nasıl hesaplanır
Lojistik regresyon, yanıt değişkeni ikili olduğunda bir regresyon modeline uymak için kullandığımız istatistiksel bir yöntemdir.
Lojistik regresyon modelinin bir veri kümesine ne kadar iyi uyduğunu değerlendirmek için aşağıdaki iki ölçüme bakabiliriz:
- Duyarlılık: Sonuç gerçekten olumluyken modelin bir gözlem için olumlu bir sonuç tahmin etme olasılığı. Buna aynı zamanda “gerçek pozitif oran” da denir.
- Özgüllük: Sonuç gerçekten negatif olduğunda modelin bir gözlem için negatif bir sonuç öngörme olasılığı. Buna aynı zamanda “gerçek negatif oran” da denir.
Bu iki ölçümü görselleştirmenin bir yolu, “alıcı çalışma karakteristiği” eğrisi anlamına gelen bir ROC eğrisi oluşturmaktır.
Bu, y ekseni boyunca duyarlılığı ve x ekseni boyunca (1 – özgüllüğü) görüntüleyen bir grafiktir.
Lojistik regresyon modelinin verileri sınıflandırmadaki etkinliğini ölçmenin bir yolu, “eğrinin altındaki alan” anlamına gelen AUC’yi hesaplamaktır.
AUC 1’e ne kadar yakınsa model o kadar iyidir.
Aşağıdaki adım adım örnek, Python’da bir lojistik regresyon modeli için AUC’nin nasıl hesaplanacağını gösterir.
1. Adım: Paketleri içe aktarın
Öncelikle Python’da lojistik regresyon gerçekleştirmek için gerekli paketleri içe aktaracağız:
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
Adım 2: Lojistik regresyon modelini yerleştirin
Daha sonra, bir veri kümesini içe aktaracağız ve buna bir lojistik regresyon modeli yerleştireceğiz:
#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)
3. Adım: AUC’yi hesaplayın
Modelin AUC’sini hesaplamak için metrics.roc_auc_score() fonksiyonunu kullanabiliriz:
#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
Bu özel model için AUC (eğri altındaki alan) 0,5602’dir .
AUC puanı 0,5 olan bir modelin rastgele tahminler yapan bir modelden daha iyi olmadığını hatırlayın.
Dolayısıyla çoğu durumda, AUC puanı 0,5602 olan bir model, gözlemleri doğru sınıflara sınıflandırma konusunda zayıf kabul edilecektir.
Ek kaynaklar
Aşağıdaki eğitimler ROC eğrileri ve AUC puanları hakkında ek bilgi sağlar:
ROC Eğrisi Nasıl Yorumlanır (Örneklerle)
İyi bir AUC puanı nedir?