Lojistik regresyon ve ROC eğrisi

scikit-learn ile Supervised Learning

George Boorman

Core Curriculum Manager, DataCamp

İkili sınıflandırma için lojistik regresyon

  • Lojistik regresyon sınıflandırma için kullanılır

  • Lojistik regresyon olasılık üretir

  • Olasılık $ \ p>0.5$ ise:

    • Veri 1 olarak etiketlenir
  • Olasılık $ \ p<0.5$ ise:

    • Veri 0 olarak etiketlenir
scikit-learn ile Supervised Learning

Doğrusal karar sınırı

özellik1'e karşı özellik2 saçılım grafiği; churn tahmini için soldan sağa giden düz karar sınırı

scikit-learn ile Supervised Learning

scikit-learn'de lojistik regresyon

from sklearn.linear_model import LogisticRegression

logreg = LogisticRegression()
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
logreg.fit(X_train, y_train)
y_pred = logreg.predict(X_test)
scikit-learn ile Supervised Learning

Olasılıkları tahmin etme

y_pred_probs = logreg.predict_proba(X_test)[:, 1]

print(y_pred_probs[0])
[0.08961376]
scikit-learn ile Supervised Learning

Olasılık eşikleri

  • Varsayılan lojistik regresyon eşiği = 0.5

  • Lojistik regresyona özgü değildir

    • KNN sınıflayıcılarında da eşikler vardır
  • Eşiği değiştirirsek ne olur?

scikit-learn ile Supervised Learning

ROC eğrisi

sol alttan sağ üste giden noktalı çizgiyle gerçek pozitif oranı ve yanlış pozitif oranı

scikit-learn ile Supervised Learning

ROC eğrisi

sağ üstte vurgulanan sıfır eşik değeri

scikit-learn ile Supervised Learning

ROC eğrisi

sol altta vurgulanan 1 eşiği

scikit-learn ile Supervised Learning

ROC eğrisi

her iki eşik de vurgulanmış

scikit-learn ile Supervised Learning

ROC eğrisi

farklı eşikleri temsil eden, noktalı çizginin üstünde sağa yukarı kıvrılan noktalar

scikit-learn ile Supervised Learning

ROC eğrisi

farklı eşikleri temsil eden, noktalı çizginin üstünde sağa yukarı kıvrılan çizgi

scikit-learn ile Supervised Learning

ROC eğrisini çizmek

from sklearn.metrics import roc_curve

fpr, tpr, thresholds = roc_curve(y_test, y_pred_probs)
plt.plot([0, 1], [0, 1], 'k--') plt.plot(fpr, tpr) plt.xlabel('False Positive Rate') plt.ylabel('True Positive Rate') plt.title('Logistic Regression ROC Curve') plt.show()
scikit-learn ile Supervised Learning

ROC eğrisini çizmek

churn veri seti için ROC eğrisi: sol alttan sağ üste giden çizgi

scikit-learn ile Supervised Learning

ROC AUC

churn veri seti için ROC eğrisi: sol alttan sağ üste giden çizgi, p=0.67 notu ile

scikit-learn ile Supervised Learning

scikit-learn'de ROC AUC

from sklearn.metrics import roc_auc_score

print(roc_auc_score(y_test, y_pred_probs))
0.6700964152663693
scikit-learn ile Supervised Learning

Hadi pratik yapalım!

scikit-learn ile Supervised Learning

Preparing Video For Download...