Makine Öğrenmesi
Skor karşılaştırma
Modeller, validation skoru ile karşılaştırılır.
Skorları karşılaştırmak
İki modelin CV ortalamaları arasındaki küçük fark anlamlı olmayabilir. Ortalamanın yanında standart sapmaya da bakılır; aralıklar örtüşüyorsa "biri kesin daha iyi" denemez:
for ad, m in adaylar.items():
s = cross_val_score(m, X, y, cv=10)
print(f"{ad}: {s.mean():.3f} ± {s.std():.3f}")
Skorlar yakınsa daha basit, daha hızlı ya da daha yorumlanabilir model tercih edilir.
Eğitim süresi de bir ölçüttür
cross_validate, skorların yanında eğitim ve tahmin sürelerini de döndürür; birden çok metriği aynı anda hesaplayabilir:
from sklearn.model_selection import cross_validate
r = cross_validate(m, X, y, cv=5, scoring=["accuracy", "f1_macro"])
print(r["test_accuracy"].mean(), r["test_f1_macro"].mean())
print(r["fit_time"].mean())
Canlı sistemde her tahmin milisaniye sayıyorsa küçük bir doğruluk farkı için çok yavaş bir model seçilmez.
Uygulama Ortalama ± sapma
Meme kanseri verisinde ölçekli KNN ve ölçekli lojistik regresyonu 5 katla karşılaştır. Her satırı f"{ad}: {ort:.3f} ± {std:.3f}" biçiminde yazdır.
Örnek çözümü göster
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import cross_val_score
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler
X, y = load_breast_cancer(return_X_y=True)
from sklearn.neighbors import KNeighborsClassifier
from sklearn.linear_model import LogisticRegression
adaylar = {"knn": make_pipeline(StandardScaler(), KNeighborsClassifier()), "lojistik": make_pipeline(StandardScaler(), LogisticRegression())}
for ad, m in adaylar.items():
s = cross_val_score(m, X, y, cv=5)
print(f"{ad}: {s.mean():.3f} ± {s.std():.3f}")
Kendini test et
-
A: 0.912 ± 0.040, B: 0.918 ± 0.045 ise hangi yorum doğrudur?
- B açıkça daha iyidir
- A açıkça daha iyidir
- İkisi de kötüdür
- Fark belirsizlik içinde; ikisi pratikte eşit
Cevabı göster
Fark belirsizlik içinde; ikisi pratikte eşit — 0.006'lık fark, standart sapmaların (~0.04) yanında çok küçüktür.
-
Birden çok metrikle doğrula.
r = ____(m, X, y, cv=5, scoring=["accuracy", "f1_macro"])
Cevabı göster
r = cross_validate(m, X, y, cv=5, scoring=["accuracy", "f1_macro"])
-
Çıktıları eşleştir.
- s.mean()
- Beklenen başarı
- s.std()
- Belirsizlik
- fit_time
- Eğitim süresi
- test_f1_macro
- Makro F1 skorları
Sıradaki ders: Hiperparametre