Değerlendirme
- Makine Öğrenmesi kursu
- Başlangıç
- Ders 74/112
- 7 dk
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.
Başlangıç kodu
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
# buraya yazÖrnek çözüm
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())Beklenen çıktı
[[15 0 0] [ 0 16 2] [ 0 1 11]] [1. 0.889 0.917] 1
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 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ş Doğru cevap
Açıklama: Satır gerçek sınıfı (indeks 1), sütun tahmini (indeks 0) gösterir.
2 Her sınıfın duyarlılığını ayrı ayrı al.
r = recall_score(y_test, tahmin, average=____)
r = recall_score(y_test, tahmin, average=None)
Açıklama: average=None ortalama almadan sınıf başına değer döndürür.
3 Çıktıları eşleştir.
| Kavram | Anlamı |
|---|---|
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 |