CodeBlanks Logo Icon CodeBlanks

Cross-validation

Cross-validation, veriyi birden çok parçaya bölerek modeli değerlendirir.

Çapraz doğrulama

Tek bir bölme şansa bağlıdır. K katlı çapraz doğrulama veriyi K parçaya böler; her seferinde bir parça doğrulama, kalanlar eğitim olur. K skorun ortalaması daha güvenilir bir tahmindir:

from sklearn.model_selection import cross_val_score
skorlar = cross_val_score(KNeighborsClassifier(), X, y, cv=5)
print(skorlar.round(3))          # 5 ayrı skor
print(skorlar.mean().round(3), skorlar.std().round(3))

Standart sapma, skorun bölmeden bölmeye ne kadar oynadığını gösterir.

Sınıflandırmada katmanlı katlar

Sınıflandırıcı verildiğinde cross_val_score varsayılan olarak StratifiedKFold kullanır; her katmanda sınıf oranları korunur. Ölçüt scoring ile seçilir:

cross_val_score(model, X, y, cv=5, scoring="f1_macro")
cross_val_score(reg, X, y, cv=5, scoring="neg_mean_absolute_error")

Hata metrikleri "neg_" ile negatif verilir, çünkü scikit-learn her zaman "büyük daha iyi" kuralını uygular.

Uygulama 5 katlı doğrulama

Iris'te DecisionTreeClassifier(random_state=0) için 5 katlı çapraz doğrulama yap. Skorları round(3) ile, ardından ortalamayı round(..., 3) ile yazdır.

Başlangıç kodu

model.py
from sklearn.datasets import load_iris
from sklearn.model_selection import cross_val_score

X, y = load_iris(return_X_y=True)
from sklearn.tree import DecisionTreeClassifier

# buraya yaz

Örnek çözüm

model.py
from sklearn.datasets import load_iris
from sklearn.model_selection import cross_val_score

X, y = load_iris(return_X_y=True)
from sklearn.tree import DecisionTreeClassifier

skorlar = cross_val_score(DecisionTreeClassifier(random_state=0), X, y, cv=5)
print(skorlar.round(3))
print(round(skorlar.mean(), 3))

Beklenen çıktı

[0.967 0.967 0.9   0.967 1.   ]
0.96

Soru ve cevaplar

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

1 <code>cv=10</code> ile her örnek kaç kez doğrulama kümesinde yer alır?

  • 0
  • 1 Doğru cevap
  • 10
  • 9

Açıklama: Her örnek tam bir katmana aittir; o katman doğrulama olduğunda bir kez ölçülür.

2 Ölçüt olarak makro F1 kullan.

Soru
cross_val_score(model, X, y, cv=5, ____="f1_macro")
Cevap
cross_val_score(model, X, y, cv=5, scoring="f1_macro")

Açıklama: scoring metrik adını metin olarak alır.

3 Kavramları eşleştir.

Kavram Anlamı
cv=5 5 katman
skorlar.mean() Ortalama başarı
skorlar.std() Bölme kararsızlığı
neg_mean_absolute_error Negatif MAE

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