Train-test split
- Makine Öğrenmesi kursu
- Başlangıç
- Ders 65/112
- 5 dk
Veri, train_test_split ile eğitim ve test kümelerine ayrılır.
Neden ayrı test?
Bir modelin gerçek değeri, hiç görmediği veride ne yaptığıdır. train_test_split veriyi rastgele karıştırıp böler; shuffle=True varsayılandır.
from sklearn.model_selection import train_test_split
X_tr, X_te, y_tr, y_te = train_test_split(X, y, test_size=0.2,
random_state=42, stratify=y)Zaman serilerinde karıştırmak yanlıştır: gelecekten öğrenip geçmişi tahmin etmek olur. Orada shuffle=False ile ilk kısım eğitime, son kısım teste ayrılır.
random_state ve tekrarlanabilirlik
Farklı bölmeler farklı skorlar verir; küçük veri setlerinde fark büyük olabilir. random_state sabitlenince sonuç tekrarlanabilir olur:
for rs in [0, 1, 2]:
X_tr, X_te, y_tr, y_te = train_test_split(X, y, test_size=0.3, random_state=rs)
print(rs, model.fit(X_tr, y_tr).score(X_te, y_te))Skorun bölmeye göre ne kadar oynadığını görmek, tek bir sayıya fazla güvenmemeyi öğretir; çapraz doğrulama bu sorunu çözer.
Uygulama Sıralı bölme
10 elemanlı sıralı veriyi test_size=0.3, shuffle=False ile böl ve test girdilerini X_test.ravel() ile yazdır.
Başlangıç kodu
import numpy as np
from sklearn.model_selection import train_test_split
X = np.arange(10).reshape(-1, 1)
y = np.arange(10) * 2
# buraya yazÖrnek çözüm
import numpy as np
from sklearn.model_selection import train_test_split
X = np.arange(10).reshape(-1, 1)
y = np.arange(10) * 2
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, shuffle=False)
print(X_test.ravel())Beklenen çıktı
[7 8 9]
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Günlük satış verisinde gelecek ayı tahmin edeceksen bölmeyi nasıl yaparsın?
- Test kümesi kullanmadan
- Son günler eğitim, eski günler test
- Karıştırmadan: eski günler eğitim, son günler test Doğru cevap
- Rastgele karıştırarak
Açıklama: Zaman sırası korunmalıdır; model yalnızca geçmişten öğrenebilir.
2 Zaman serisini karıştırmadan böl.
train_test_split(X, y, test_size=0.2, ____=False)
train_test_split(X, y, test_size=0.2, shuffle=False)
Açıklama: shuffle=False sırayı korur; son %20 test olur.
3 Parametreleri eşleştir.
| Kavram | Anlamı |
|---|---|
test_size |
Test oranı |
random_state |
Tekrarlanabilir bölme |
stratify |
Sınıf oranını korur |
shuffle=False |
Sırayı korur |