CodeBlanks Logo Icon CodeBlanks

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.

Başlangıç kodu

model.py
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

model.py
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.

Soru
r = recall_score(y_test, tahmin, average=____)
Cevap
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

Başlangıç bölümündeki tüm dersler