Makine Öğrenmesi - Genel Konular

Veri Setini Rastgele Ayırma Yöntemi (train_test_split)

Yayın tarihi :12-Oca-22

Veri setini rastgele ayırma yöntemi (train_test_split), dizileri veya matrisleri train (makine öğrenmesi yöntemlerinde eğitim verisi olarak kullanılacak olan kısım) ve test (makine öğrenmesi yöntemlerinde test/değerlendirme verisi olarak kullanılacak olan kısım) olarak alt kümelere ayırmak için kullanılan bir yapıdır. Veri setimizi rasgele istediğimiz oranda bölebiliriz. Makine öğrenmesi konularında sıkça karşılaşacağımız bir yöntemdir.

Kullanabilmek için kütüphanenin içe aktarılması gerekmektedir.

from sklearn.model_selection import train_test_split

Söz dizimi: train_test_split(*arrays, test_size=None, train_size=None, random_state=None, shuffle=True, stratify=None)

  • *arrays, x(bağımsız) ve y(bağımlı) değişkenleri temsil etmektedir.
  • test_size, veri setindeki test verilerinin hangi oranda olacağı belirtilir. Genellikle 0.2 değeri verirlir. Yani verinin %80'inin model eğitmek için %20'sini de modelin doğruluğunu test etmek için tutar.
  • train_size, veri setindeki train verilerinin hangi oranda olacağı belirtilir. Genellikle 0.8 değeri verirlir. Yani verinin %80'inin model eğitmek için %20'sini de modelin doğruluğunu test etmek için tutar. test_size değeri verildiği zaman bu değerin girilmesine gerek kalmayacaktır.
  • random_state, Model eğitildikten sonra modeli iyileştirmek için başka yöntemler kullanılır, diğer yöntemerde de modelin iyileştiğini görebilmek için train ve test değerlerinin aynı değerleri içermesi önemlidir. Bunun için random olarak 13.satır değeri ile (farklı değerler de verilebilir) veri setini bölmeye başlar.
  • shuffle, veri setini bölmeden önce karıştırılıp karıştırılmayacağı belirtilir. Varsayılan olarak True'dir.

Kullanım şekli: x_train,x_test,y_train,y_test = train_test_split(x,y,test_size=0.2,random_state=13)

  • x_train,x_test,y_train,y_test, veri setimizi 4 parçaya bölerek bu değerlere ayrı ayrı eşitler.
    • x_train: Makine öğrenmesi için kullanılacak bağımsız değişkenleri tutar. (bu öreğimizde tüm veri setinin 0.8'i kadar.) Satır sayısı y_train ile aynı olmak zorundadır.
    • x_test: Makine öğrenmesi sonucunda öğrendiği değerlerle gerçek değerleri karşılaştırmak için bağımsız değişken tutar. (bu öreğimizde tüm veri setinin 0.2'i kadar.) Satır sayısı y_test ile aynı olmak zorundadır.
    • y_train: Makine öğrenmesi için kullanılacak bağımlı (hedef) değişkeni tutar. (bu öreğimizde tüm veri setinin 0.8'i kadar.) Satır sayısı x_train ile aynı olmak zorundadır.
    • y_test: Makine öğrenmesi sonucunda öğrendiği değerlerle gerçek değerleri karşılaştırmak için bağımlı (hedef) değişkeni tutar. (bu öreğimizde tüm veri setinin 0.2'i kadar.) Satır sayısı x_test ile aynı olmak zorundadır.

Örnek-1: Rasgele verilerden oluşan bir veri seti oluşturalım ve train ve test olarak veri setini bölelim.

import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
#4 bağmısız(x) 1 bağımlı(y) değişkenine sahip 100 satırlık veri seti oluşturalım.
df=pd.DataFrame(
    data=np.random.randint(1,50,(100,5)),
    columns=["X1","X2","X3","X4","Y"]
)
df.head()

Çıktı:

#x ve y değerlerine atama yapalım
x,y=df.drop("Y",axis=1),df[["Y"]]
x.shape,y.shape

Çıktı:

((100, 4), (100, 1))
x_train,x_test,y_train,y_test=train_test_split(x,y,random_state=13,test_size=.2)
print("x_train boyutu:{}".format(x_train.shape))
print("x_test boyutu: {}".format(x_test.shape))
print("y_train boyutu:{}".format(y_train.shape))
print("x_test boyutu: {}".format(y_test.shape))

Çıktı:

x_train boyutu:(80, 4)
x_test boyutu: (20, 4)
y_train boyutu:(80, 1)
x_test boyutu: (20, 1)
x_train.head()

Çıktı:

x_test.head()

Çıktı:

y_train.head()

Çıktı:

y_test.head()

Çıktı:

Paylaş:

Yorum Yap (*Yorumunuza kod eklemek isterseniz Kod Parçacığı Ekle butonuna tıklayarak ekleyebilirsiniz.)

Yorumlar

Henüz hiç yorum yapılmamış, ilk yorum yapan sen ol.