CodeBlanks Logo Icon CodeBlanks

Avantajlar

Cross-validation, tek train-test bölmeden daha güvenilir sonuç verir.

Tekrarlı CV

Tek bir K katlı CV de katman atamasına bağlıdır. RepeatedStratifiedKFold, CV'yi farklı karıştırmalarla birkaç kez tekrarlar ve daha kararlı bir ortalama verir:

from sklearn.model_selection import RepeatedStratifiedKFold
cv = RepeatedStratifiedKFold(n_splits=5, n_repeats=3, random_state=0)
skor = cross_val_score(model, X, y, cv=cv)
print(len(skor))   # 15

Küçük veri setlerinde iki model arasındaki farkı değerlendirmenin en güvenilir yollarından biridir.

İç içe CV

Hiperparametreler CV ile seçilince o CV skoru iyimserleşir. İç içe CV, dışta bir CV ile ölçerken içte ayrı bir CV ile seçim yapar; seçim sürecinin tamamının dürüst skorunu verir:

ic = GridSearchCV(SVC(), {"C": [0.1, 1, 10]}, cv=3)
dis_skor = cross_val_score(ic, X, y, cv=5)   # her dış katmanda yeni arama
print(dis_skor.mean())

Hesaplaması pahalıdır (5 × 3 × 3 eğitim) ama yayımlanacak bir sonuç için en doğru yöntemdir.

Uygulama İç içe doğrulama

Iris'te GridSearchCV(SVC(), {"C": [0.1, 1, 10]}, cv=3) iç arayıcısını cross_val_score(..., cv=5) ile dışta değerlendir. Dış skorların ortalamasını round(..., 3) ile, ardından aramanın tüm veride bulduğu best_score_ değerini round(..., 3) ile yazdır.

Başlangıç kodu

model.py
from sklearn.datasets import load_iris
from sklearn.model_selection import GridSearchCV, cross_val_score
from sklearn.svm import SVC

X, y = load_iris(return_X_y=True)

# buraya yaz

Örnek çözüm

model.py
from sklearn.datasets import load_iris
from sklearn.model_selection import GridSearchCV, cross_val_score
from sklearn.svm import SVC

X, y = load_iris(return_X_y=True)

ic = GridSearchCV(SVC(), {"C": [0.1, 1, 10]}, cv=3)
print(round(cross_val_score(ic, X, y, cv=5).mean(), 3))
print(round(ic.fit(X, y).best_score_, 3))

Beklenen çıktı

0.98
0.973

Soru ve cevaplar

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

1 <code>n_splits=10, n_repeats=5</code> ile kaç eğitim yapılır?

  • 50 Doğru cevap
  • 15
  • 10
  • 5

Açıklama: 10 katman × 5 tekrar = 50 eğitim.

2 CV'yi 3 kez tekrarla.

Soru
cv = RepeatedStratifiedKFold(n_splits=5, ____=3, random_state=0)
Cevap
cv = RepeatedStratifiedKFold(n_splits=5, n_repeats=3, random_state=0)

Açıklama: n_repeats tekrar sayısıdır.

3 Yöntemleri eşleştir.

Kavram Anlamı
Tekrarlı CV Daha kararlı ortalama
İç içe CV Seçim dahil dürüst skor
İç CV Hiperparametre seçimi
Dış CV Genelleme ölçümü

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