CodeBlanks Logo Icon CodeBlanks

Değerlendirme

SVM doğruluğunu hesaplarsın.

Değerlendirme

Son ölçüm test kümesinde bir kez yapılır: F1, kesinlik, duyarlılık ve karmaşıklık matrisi. Sonuç temel çizgiyle karşılaştırılarak raporlanır:

p = gs.predict(X_test)
print(classification_report(y_test, p, digits=3))
print(confusion_matrix(y_test, p))

Raporda şunlar yer almalı: hangi metrik neden seçildi, temel çizgiye göre kazanç, hangi hatanın ne kadar yapıldığı.

Sonucu anlatmak

Sayılar iş diline çevrilmelidir: "Test kümesindeki 31 ayrılan müşterinin X tanesini yakaladık; alarm verdiğimiz her 10 müşteriden Y'si gerçekten ayrılıyordu." Bu cümleler duyarlılık ve kesinliğin kendisidir:

tn, fp, fn, tp = confusion_matrix(y_test, p).ravel()
print(f"{tp + fn} ayrılandan {tp} yakalandı")
print(f"{tp + fp} alarmın {tp} tanesi doğru")

Sınırlamalar da yazılmalı: veri yapay, örnek sayısı küçük, sonuçlar gerçek bir müşteri kitlesinde yeniden doğrulanmalı.

Uygulama Final raporu

Hazır gs ile test tahminlerini al. F1'i round(..., 3) ile yazdır. Ardından karmaşıklık matrisini ravel() ile açıp f"{tp + fn} ayrılandan {tp} yakalandı" ve f"{tp + fp} alarmın {tp} tanesi doğru" satırlarını yazdır.

Başlangıç kodu

model.py
import numpy as np
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split

X, y = make_classification(n_samples=600, n_features=8, n_informative=4, weights=[0.8, 0.2], random_state=7)
rng = np.random.default_rng(7)
X[rng.random(X.shape) < 0.05] = np.nan
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=0, stratify=y)
from sklearn.pipeline import make_pipeline
from sklearn.impute import SimpleImputer
from sklearn.preprocessing import StandardScaler
from sklearn.svm import SVC
from sklearn.model_selection import GridSearchCV

pipe = make_pipeline(SimpleImputer(strategy="median"), StandardScaler(), SVC(class_weight="balanced"))
gs = GridSearchCV(pipe, {"svc__C": [0.1, 1, 10], "svc__gamma": ["scale", 0.1]}, cv=5, scoring="f1").fit(X_train, y_train)
from sklearn.metrics import f1_score, confusion_matrix

# buraya yaz

Örnek çözüm

model.py
import numpy as np
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split

X, y = make_classification(n_samples=600, n_features=8, n_informative=4, weights=[0.8, 0.2], random_state=7)
rng = np.random.default_rng(7)
X[rng.random(X.shape) < 0.05] = np.nan
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=0, stratify=y)
from sklearn.pipeline import make_pipeline
from sklearn.impute import SimpleImputer
from sklearn.preprocessing import StandardScaler
from sklearn.svm import SVC
from sklearn.model_selection import GridSearchCV

pipe = make_pipeline(SimpleImputer(strategy="median"), StandardScaler(), SVC(class_weight="balanced"))
gs = GridSearchCV(pipe, {"svc__C": [0.1, 1, 10], "svc__gamma": ["scale", 0.1]}, cv=5, scoring="f1").fit(X_train, y_train)
from sklearn.metrics import f1_score, confusion_matrix

p = gs.predict(X_test)
print(round(f1_score(y_test, p), 3))
tn, fp, fn, tp = confusion_matrix(y_test, p).ravel()
print(f"{tp + fn} ayrılandan {tp} yakalandı")
print(f"{tp + fp} alarmın {tp} tanesi doğru")

Beklenen çıktı

0.833
31 ayrılandan 25 yakalandı
29 alarmın 25 tanesi doğru

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Test F1 değeri, CV'deki <code>best_score_</code>'tan biraz düşük çıktı. Bu ne anlama gelir?

  • Model işe yaramaz
  • Beklenen bir durumdur; best_score_ iyimserdir Doğru cevap
  • Kesin bir hata vardır
  • Test kümesi bozuktur

Açıklama: Seçim sürecindeki şans payı yüzünden küçük bir düşüş normaldir.

2 Sınıf başına raporu üç basamakla al.

Soru
print(____(y_test, p, digits=3))
Cevap
print(classification_report(y_test, p, digits=3))

Açıklama: classification_report kesinlik, duyarlılık, F1 ve desteği verir.

3 Cümleleri metriklerle eşleştir.

Kavram Anlamı
Ayrılanların kaçını yakaladık? Duyarlılık
Alarmların kaçı doğru? Kesinlik
İkisinin dengesi F1
Hata dökümü Karmaşıklık matrisi

Orta seviye bölümündeki tüm dersler