Makine Öğrenmesi
Değerlendirme
Model doğruluğunu hesaplarsın.
Değerlendirme
Projeyi değerlendirirken tek bir doğruluk sayısı yetmez. Karmaşıklık matrisi hangi sınıfların karıştığını, classification_report sınıf başına kesinlik ve duyarlılığı gösterir:
from sklearn.metrics import confusion_matrix, classification_report
tahmin = model.predict(X_test)
print(confusion_matrix(y_test, tahmin))
print(classification_report(y_test, tahmin, digits=3))
Raporda en düşük duyarlılığa sahip sınıf, modelin en çok zorlandığı sınıftır.
Sınıf başına duyarlılık
recall_score(..., average=None) her sınıfın duyarlılığını ayrı dizi olarak döndürür; karmaşıklık matrisinde köşegenin satır toplamına bölünmesine eşittir:
from sklearn.metrics import recall_score
print(recall_score(y_test, tahmin, average=None).round(3))
cm = confusion_matrix(y_test, tahmin)
print((cm.diagonal() / cm.sum(axis=1)).round(3)) # aynısı
Sonuçları rapora yazarken en zayıf sınıfı belirtmek, sonraki iyileştirmenin nereye odaklanacağını gösterir.
Uygulama Sonucu raporla
Test tahminleriyle karmaşıklık matrisini yazdır. Ardından sınıf başına duyarlılığı recall_score(..., average=None).round(3) ile ve en düşük duyarlılıklı sınıfın indeksini argmin ile yazdır.
Örnek çözümü göster
from sklearn.datasets import load_wine
from sklearn.model_selection import train_test_split
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifier
X, y = load_wine(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=42, stratify=y)
model = make_pipeline(StandardScaler(), KNeighborsClassifier(n_neighbors=5)).fit(X_train, y_train)
from sklearn.metrics import confusion_matrix, recall_score
tahmin = model.predict(X_test)
print(confusion_matrix(y_test, tahmin))
r = recall_score(y_test, tahmin, average=None).round(3)
print(r)
print(r.argmin())
Kendini test et
-
Karmaşıklık matrisinde 2. satır, 1. sütundaki 3 değeri ne anlatır?
- Sınıf 1 doğru tahminleri
- 3 sınıf vardır
- Sınıf 0 kesinliği
- Gerçekte sınıf 1 olan 3 örnek sınıf 0 tahmin edilmiş
Cevabı göster
Gerçekte sınıf 1 olan 3 örnek sınıf 0 tahmin edilmiş — Satır gerçek sınıfı (indeks 1), sütun tahmini (indeks 0) gösterir.
-
Her sınıfın duyarlılığını ayrı ayrı al.
r = recall_score(y_test, tahmin, average=____)
Cevabı göster
r = recall_score(y_test, tahmin, average=None)
-
Çıktıları eşleştir.
- confusion_matrix
- Karışan sınıflar
- classification_report
- Sınıf başına tablo
- average=None
- Sınıf başına dizi
- cm.diagonal()
- Doğru tahminler
Sıradaki ders: Ölçeklendirme nedir?