Makine Öğrenmesi
Karmaşıklık matrisi
Karmaşıklık matrisi, sınıflandırma sonuçlarını detaylı gösterir.
Karmaşıklık matrisi
Karmaşıklık matrisi, hangi sınıfın hangisiyle karıştırıldığını gösterir. İkili problemde dört hücre vardır:
from sklearn.metrics import confusion_matrix
y_true = [1, 0, 1, 1, 0, 0]
y_pred = [1, 0, 0, 1, 1, 0]
print(confusion_matrix(y_true, y_pred))
# [[2 1] satır: gerçek 0 -> TN=2, FP=1
# [1 2]] satır: gerçek 1 -> FN=1, TP=2
Satırlar gerçek sınıflar, sütunlar tahminlerdir. Köşegen doğru tahminleri, köşegen dışı hataları sayar.
Hücreleri okumak
ravel() ile dört değer sırayla açılabilir. Hangi hatanın daha pahalı olduğu probleme göre değişir:
tn, fp, fn, tp = confusion_matrix(y_true, y_pred).ravel()
# spam filtresi: FP (önemli e-posta spam'e düştü) pahalı
# kanser taraması: FN (hasta kaçırıldı) pahalı
Çok sınıflı problemde matris k×k olur; büyük köşegen dışı değerler modelin hangi sınıfları ayıramadığını gösterir.
Uygulama Matrisi çıkar
Ölçeklenmiş bir lojistik regresyon hattıyla meme kanseri verisinde test tahminlerini al. Karmaşıklık matrisini yazdır, ardından ravel() ile açıp FN ve FP sayılarını aralarında boşlukla yazdır.
Örnek çözümü göster
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
X, y = load_breast_cancer(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=0, stratify=y)
from sklearn.metrics import confusion_matrix
m = make_pipeline(StandardScaler(), LogisticRegression()).fit(X_train, y_train)
cm = confusion_matrix(y_test, m.predict(X_test))
print(cm)
tn, fp, fn, tp = cm.ravel()
print(fn, fp)
Kendini test et
-
Hasta olan birine "sağlıklı" demek hangi hücreye düşer?
- Doğru pozitif (TP)
- Yanlış negatif (FN)
- Yanlış pozitif (FP)
- Doğru negatif (TN)
Cevabı göster
Yanlış negatif (FN) — Gerçek pozitif (hasta), tahmin negatif (sağlıklı): yanlış negatif.
-
Matrisi dört değere aç.
tn, fp, fn, tp = confusion_matrix(y_true, y_pred).____()
Cevabı göster
tn, fp, fn, tp = confusion_matrix(y_true, y_pred).ravel()
-
Hücreleri eşleştir.
- TP
- Pozitif, doğru bilindi
- TN
- Negatif, doğru bilindi
- FP
- Yanlış alarm
- FN
- Kaçırılan pozitif
Sıradaki ders: Özet - Sınıflandırma