Makine Öğrenmesi
Stratified
Stratified k-fold, sınıf dağılımını her katmanda korur.
StratifiedKFold
Sınıflandırmada katmanların sınıf oranlarını koruması gerekir; aksi halde bir katmanda azınlık sınıfı hiç bulunmayabilir. StratifiedKFold bunu garanti eder:
from sklearn.model_selection import StratifiedKFold
skf = StratifiedKFold(n_splits=5, shuffle=True, random_state=0)
for egitim, dogrulama in skf.split(X, y): # y gerekir
print(np.bincount(y[dogrulama]))
split bu kez y'yi de alır, çünkü oranları ona bakarak korur.
Gruplu ve zamana bağlı bölme
Aynı hastanın birden çok ölçümü hem eğitimde hem doğrulamada olursa model hastayı "tanır" ve skor şişer. GroupKFold bir grubun tüm örneklerini aynı katmanda tutar. Zaman serilerinde TimeSeriesSplit her zaman geçmişle eğitip gelecekle doğrular:
from sklearn.model_selection import GroupKFold, TimeSeriesSplit
cross_val_score(model, X, y, cv=GroupKFold(5), groups=hasta_id)
for tr, va in TimeSeriesSplit(n_splits=3).split(X):
print(tr.max() < va.min()) # True: eğitim hep önce
Doğru bölücü, verinin gerçek kullanım biçimini taklit eden bölücüdür.
Uygulama Katman oranları
12 sıfır ve 3 birden oluşan y için KFold(n_splits=3) ve StratifiedKFold(n_splits=3) (ikisi de karıştırmasız) katmanlarındaki 1 sayısını y[dogrulama].sum() ile liste olarak hesapla. İki listeyi alt alta yazdır.
Örnek çözümü göster
import numpy as np
from sklearn.model_selection import KFold, StratifiedKFold
X = np.arange(15).reshape(-1, 1)
y = np.array([0] * 12 + [1] * 3)
for bolucu in [KFold(n_splits=3), StratifiedKFold(n_splits=3)]:
print([int(y[dogrulama].sum()) for _, dogrulama in bolucu.split(X, y)])
Kendini test et
-
Neden <code>StratifiedKFold.split</code> <code>y</code> parametresini ister?
- İstemez
- Sınıf oranlarını korumak için
- Modeli eğitmek için
- Skor hesaplamak için
Cevabı göster
Sınıf oranlarını korumak için — Katmanlara dağıtım her sınıf için ayrı ayrı yapılır.
-
Aynı grubun örneklerini aynı katmanda tut.
cross_val_score(model, X, y, cv=GroupKFold(5), ____=hasta_id)
Cevabı göster
cross_val_score(model, X, y, cv=GroupKFold(5), groups=hasta_id)
-
Durumları bölücülerle eşleştir.
- Dengesiz sınıflar
- StratifiedKFold
- Aynı hastanın ölçümleri
- GroupKFold
- Günlük satışlar
- TimeSeriesSplit
- Bağımsız örnekler
- KFold
Sıradaki ders: Avantajlar