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?

Yorum ekle

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir