CodeBlanks Logo Icon CodeBlanks

Eğitim ve test

Eğitim (train) verisiyle model eğitilir, test verisiyle modelin performansı ölçülür.

Neden ayrı test verisi?

Modeli eğittiğin veriyle ölçersen ezberleyip ezberlemediğini anlayamazsın. Bu yüzden veri ikiye bölünür: eğitim kümesiyle model öğrenir, test kümesiyle hiç görmediği örneklerde başarısı ölçülür.

from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(
    X, y, test_size=0.2, random_state=42)

test_size=0.2 verinin %20'sini teste ayırır; random_state bölmeyi her çalıştırmada aynı yapar.

Dönen dört parça

train_test_split dört dizi döndürür ve sıra önemlidir: önce iki X parçası, sonra iki y parçası.

model.fit(X_train, y_train)          # yalnızca eğitim
print(model.score(X_test, y_test))   # yalnızca test

Test verisi eğitimde hiç kullanılmamalıdır; aksi halde ölçülen başarı gerçeği yansıtmaz. Buna veri sızıntısı denir.

Uygulama Veriyi böl

20 örnekli veriyi test_size=0.25 ve random_state=0 ile böl. Eğitim ve test kümelerinin uzunluklarını aralarında boşlukla yazdır.

Başlangıç kodu

model.py
from sklearn.model_selection import train_test_split

X = [[i] for i in range(20)]
y = [i % 2 for i in range(20)]

# buraya yaz

Örnek çözüm

model.py
from sklearn.model_selection import train_test_split

X = [[i] for i in range(20)]
y = [i % 2 for i in range(20)]

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=0)
print(len(X_train), len(X_test))

Beklenen çıktı

15 5

Soru ve cevaplar

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

1 100 örnekli veride <code>test_size=0.25</code> ile kaç örnek eğitime kalır?

  • 25
  • 100
  • 50
  • 75 Doğru cevap

Açıklama: %25 (25 örnek) teste ayrılır, kalan 75 örnek eğitim içindir.

2 Verinin %30'unu teste ayır.

Soru
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=____, random_state=0)
Cevap
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=0)

Açıklama: test_size 0 ile 1 arasında bir oran ya da tam sayı adedi alır; 0.3 yüzde 30 demektir.

3 Parçaları anlamlarıyla eşleştir.

Kavram Anlamı
X_train Eğitim girdileri
y_train Eğitim etiketleri
X_test Test girdileri
y_test Test etiketleri

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