Pandas dataframe'den eğitim ve test seti nasıl oluşturulur?


Makine öğrenimi modellerini veri kümelerine yerleştirirken genellikle veri kümesini iki gruba ayırırız:

1. Eğitim seti: modeli eğitmek için kullanılır (orijinal veri setinin %70-80’i)

2. Test seti: model performansına ilişkin tarafsız bir tahmin elde etmek için kullanılır (orijinal veri setinin %20-30’u)

Python’da bir pandanın DataFrame’ini eğitim seti ve test seti olarak ayırmanın iki yaygın yolu vardır:

Yöntem 1: Sklearn’in train_test_split() işlevini kullanın

 from sklearn. model_selection import train_test_split

train, test = train_test_split(df, test_size= 0.2 , random_state= 0 )

Yöntem 2: pandalardan sample() öğesini kullanın

 train = df. sample (frac= 0.8 , random_state= 0 )
test = df. drop ( train.index )

Aşağıdaki örnekler, her yöntemin aşağıdaki pandalar DataFrame ile nasıl kullanılacağını gösterir:

 import pandas as pd
import numpy as np

#make this example reproducible
n.p. random . seeds (1)

#create DataFrame with 1,000 rows and 3 columns
df = pd. DataFrame ( {' x1 ': np.random.randint (30,size=1000),
                   ' x2 ': np. random . randint (12, size=1000),
                   ' y ': np. random . randint (2, size=1000)})

#view first few rows of DataFrame
df. head ()

        x1 x2 y
0 5 1 1
1 11 8 0
2 12 4 1
3 8 7 0
4 9 0 0

Örnek 1: sklearn’den train_test_split() işlevini kullanın

Aşağıdaki kod, pandaların DataFrame’ini eğitim ve test kümelerine bölmek için sklearn’in train_test_split() işlevinin nasıl kullanılacağını gösterir:

 from sklearn. model_selection import train_test_split

#split original DataFrame into training and testing sets
train, test = train_test_split(df, test_size= 0.2 , random_state= 0 )

#view first few rows of each set
print ( train.head ())

     x1 x2 y
687 16 2 0
500 18 2 1
332 4 10 1
979 2 8 1
817 11 1 0

print ( test.head ())

     x1 x2 y
993 22 1 1
859 27 6 0
298 27 8 1
553 20 6 0
672 9 2 1

#print size of each set
print (train. shape , test. shape )

(800, 3) (200, 3)

Sonuçtan iki setin oluşturulduğunu görebiliriz:

  • Eğitim seti: 800 satır ve 3 sütun
  • Test seti: 200 satır ve 3 sütun

test_size’nin orijinal DataFrame’den test setine ait olacak gözlemlerin yüzdesini kontrol ettiğini ve random_state değerinin bölünmeyi tekrarlanabilir hale getirdiğini unutmayın.

Örnek 2: Pandalardan sample() işlevini kullanın

Aşağıdaki kod, pandaların DataFrame’ini eğitim ve test kümelerine bölmek için pandas sample() işlevinin nasıl kullanılacağını gösterir:

 #split original DataFrame into training and testing sets
train = df. sample (frac= 0.8 , random_state= 0 )
test = df. drop ( train.index )

#view first few rows of each set
print ( train.head ())

     x1 x2 y
993 22 1 1
859 27 6 0
298 27 8 1
553 20 6 0
672 9 2 1

print ( test.head ())

    x1 x2 y
9 16 5 0
11 12 10 0
19 5 9 0
23 28 1 1
28 18 0 1

#print size of each set
print (train. shape , test. shape )

(800, 3) (200, 3)

Sonuçtan iki setin oluşturulduğunu görebiliriz:

  • Eğitim seti: 800 satır ve 3 sütun
  • Test seti: 200 satır ve 3 sütun

Frac’ın orijinal DataFrame’den eğitim setine ait olacak gözlemlerin yüzdesini kontrol ettiğini ve random_state değerinin bölünmeyi tekrarlanabilir hale getirdiğini unutmayın.

Ek kaynaklar

Aşağıdaki eğitimlerde Python’da diğer genel görevlerin nasıl gerçekleştirileceği açıklanmaktadır:

Python’da Lojistik Regresyon Nasıl Gerçekleştirilir
Python’da Karışıklık Matrisi Nasıl Oluşturulur
Python’da dengeli hassasiyet nasıl hesaplanır

Yorum ekle

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir