Cross-validation
- Makine Öğrenmesi kursu
- Başlangıç
- Ders 88/112
- 5 dk
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
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
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.
cross_val_score(model, X, y, cv=5, ____="f1_macro")
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 |