Sz
Sıfır Gecikme
veri bilimi · türkçe
Tümüİnteraktif📖Rehber🛠Araç📊Vaka💼Kariyer🐍Playground📚Öğren
Hakkımda
Ana sayfainteraktif

Confusion matrix: eşik dansı

2026 · 10 dakika okuma

Modelinin doğruluğu %95. Harika görünüyor, değil mi? Şimdi şunu söyleyeyim: veri setinin %95'i negatif sınıf. Model her şeye "negatif" dese %95 accuracy alır. Hiçbir şey öğrenmeden.

İşte bu yüzden accuracy tek başına yeterli değil. Confusion matrix, modelin gerçekte ne yaptığını gösterir.

Önce dene

Senaryo: bir hastalık testi. 50 hasta, 50 sağlıklı kişi var. Eşik değerini kaydır, TP/FP/TN/FN ve türetilen metriklerin nasıl değiştiğini izle.

0.50
Tahmin: Pozitif
TP
47
Gerçek Pozitif
FP
1
Yanlış Pozitif
Tahmin: Negatif
FN
3
Yanlış Negatif
TN
49
Gerçek Negatif
Accuracy
96.0%
Precision
97.9%
Recall
94.0%
F1
95.9%
ROC EğrisiFPRTPRAUC = 0.995

Eşik: 0.50 — Precision: 98%, Recall: 94%. Kesinliği öne çıkaran ayar — spam filtresine benzer.

4 hücre ne anlama geliyor?

Kanser taramasında FN'den kaçınmak kritik — hastayı kaçırmak ölümcül olabilir. Spam filtresinde ise FP'den kaçınmak önemli — önemli maili spam'e atmak kullanıcıyı kaybettirir.

Metrikler türetilir

from sklearn.metrics import classification_report, confusion_matrix

y_true = [1, 1, 0, 1, 0, 0, 1, 0]
y_pred = [1, 0, 0, 1, 1, 0, 1, 0]

cm = confusion_matrix(y_true, y_pred)
print(cm)
# [[TN, FP],
#  [FN, TP]]

print(classification_report(y_true, y_pred))
# precision  recall  f1-score   support

Hangi metriği ne zaman kullanırım?

ROC eğrisi ne anlatır?

ROC eğrisi, tüm olası eşik değerleri için TPR (Recall) ve FPR ilişkisini gösterir. Demoda mor noktanın eşikle birlikte eğri üzerinde hareket ettiğini gördün. AUC (Area Under Curve) bu eğrinin altındaki alan — modelin eşikten bağımsız genel performansı.

from sklearn.metrics import roc_auc_score, roc_curve
import matplotlib.pyplot as plt

fpr, tpr, thresholds = roc_curve(y_true, y_scores)
auc = roc_auc_score(y_true, y_scores)

plt.plot(fpr, tpr, label=f'AUC = {auc:.3f}')
plt.plot([0,1], [0,1], '--', color='gray')
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.title('ROC Eğrisi')
plt.legend()
plt.show()

Sıradaki yazıda Pandas'ta en çok yanlış bilinen 7 şey: yıllarca gördüğüm yaygın ama yanlış pattern'ler.

💬 Yorumlar