Değerlendirme
- Makine Öğrenmesi kursu
- Orta seviye
- Ders 34/112
- 7 dk
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
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
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.
print(____(y_test, p, digits=3))
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 |