CodeBlanks Logo Icon CodeBlanks

Train-test split

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

model.py
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

model.py
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.

Soru
train_test_split(X, y, test_size=0.2, ____=False)
Cevap
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

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