Hoe u een trein- en testset maakt vanuit een pandas dataframe


Bij het aanpassen van machine learning-modellen aan datasets verdelen we de dataset vaak in twee sets:

1. Trainingsset: gebruikt om het model te trainen (70-80% van de originele dataset)

2. Testset: gebruikt om een onbevooroordeelde schatting van de modelprestaties te verkrijgen (20-30% van de oorspronkelijke dataset)

In Python zijn er twee veelgebruikte manieren om een Panda DataFrame op te splitsen in een trainingsset en een testset:

Methode 1: Gebruik train_test_split() van sklearn

 from sklearn. model_selection import train_test_split

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

Methode 2: gebruik sample() van panda’s

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

De volgende voorbeelden laten zien hoe u elke methode kunt gebruiken met de volgende panda’s DataFrame:

 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

Voorbeeld 1: gebruik train_test_split() van sklearn

De volgende code laat zien hoe u de functie train_test_split() van sklearn gebruikt om het Panda DataFrame op te splitsen in trainings- en testsets:

 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)

Uit het resultaat kunnen we zien dat er twee sets zijn gemaakt:

  • Trainingsset: 800 rijen en 3 kolommen
  • Testset: 200 rijen en 3 kolommen

Houd er rekening mee dat test_size het percentage waarnemingen uit het oorspronkelijke DataFrame bepaalt dat tot de testset zal behoren, en dat de waarde van random_state de splitsing reproduceerbaar maakt.

Voorbeeld 2: Gebruik sample() van panda’s

De volgende code laat zien hoe u de pandas sample() -functie kunt gebruiken om het panda’s DataFrame op te splitsen in trainings- en testsets:

 #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)

Uit het resultaat kunnen we zien dat er twee sets zijn gemaakt:

  • Trainingsset: 800 rijen en 3 kolommen
  • Testset: 200 rijen en 3 kolommen

Houd er rekening mee dat frac het percentage waarnemingen uit het oorspronkelijke DataFrame bepaalt dat tot de trainingsset zal behoren, en dat de waarde random_state de splitsing reproduceerbaar maakt.

Aanvullende bronnen

In de volgende tutorials wordt uitgelegd hoe u andere veelvoorkomende taken in Python kunt uitvoeren:

Hoe logistieke regressie uit te voeren in Python
Hoe je een verwarringsmatrix creëert in Python
Hoe gebalanceerde precisie in Python te berekenen

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert