Laten we in dit artikel leren hoe we een treintestsplitsing kunnen uitvoeren met behulp van Sklearn in Python.
Train testsplitsing met Sklearn
De train_test_split() methode wordt gebruikt om onze gegevens op te splitsen in trein- en testsets.
Eerst moeten we onze gegevens verdelen in kenmerken (X) en labels (y). Het dataframe wordt verdeeld in X_train,X_test, y_train en y_test. X_train- en y_train-sets worden gebruikt voor het trainen en aanpassen van het model. De sets X_test en y_test worden gebruikt om het model te testen of het de juiste uitvoer/labels voorspelt. we kunnen de grootte van de trein en testsets expliciet testen. Er wordt voorgesteld om onze treinsets groter te houden dan de testsets.
Trein set: De trainingsdataset is een set gegevens die is gebruikt om in het model te passen. De gegevensset waarop het model is getraind. Deze gegevens worden door het model gezien en geleerd.
Testset: De testgegevensset is een subset van de trainingsgegevensset die wordt gebruikt om een nauwkeurige evaluatie te geven van de uiteindelijke pasvorm van het model.
wiskunde willekeurige javavalidatieset: Een validatiegegevensset is een voorbeeld van gegevens uit de trainingsset van uw model die wordt gebruikt om de modelprestaties te schatten terwijl de hyperparameters van het model worden afgestemd.
standaard is 25% van onze gegevens testset en wordt 75% van de gegevens gebruikt voor trainingstests.
Syntaxis: sklearn.model_selection.train_test_split()
parameters:
*arrays: reeks indexeerbare bestanden. Lijsten, numpy-arrays, scipy-sparse matrices en panda's-dataframes zijn allemaal geldige invoer. test_size: int of float, standaard Geen. Als de waarde zwevend is, moet deze tussen 0,0 en 1,0 liggen en het percentage van de gegevensset vertegenwoordigen dat moet worden getest. Als int wordt gebruikt, verwijst dit naar het totale aantal testmonsters. Als de waarde Geen is, wordt het complement van de treingrootte gebruikt. Deze wordt ingesteld op 0,25 als de treingrootte ook Geen is. train_size: int of float, standaard Geen. random_state: int, standaard Geen. Bepaalt hoe de gegevens worden geschud voordat de splitsing wordt geïmplementeerd. Voor herhaalbare uitvoer over verschillende functieaanroepen geeft u een int door.
shuffle: booleaans object, standaard True. Of de gegevens al dan niet moeten worden geschud voordat ze worden gesplitst. Stratify moet Geen zijn als shuffle=False. stratify: array-achtig object, standaard is dit Geen. Als Geen is geselecteerd, worden de gegevens gestratificeerd met behulp van deze als klasselabels.geeft terug: splitsen: lijst
Voorbeeld 1:
De pakketten numpy, pandas en scikit-learn worden geïmporteerd. Het CSV-bestand wordt geïmporteerd. X bevat de kenmerken en y is de labels. we splitsen het dataframe in X en y en voeren er een treintestsplitsing op uit. random_state fungeert als een numpy-zaadje en wordt gebruikt voor de reproduceerbaarheid van gegevens. test_size wordt gegeven als 0.25 , dit betekent dat 25% van onze gegevens in onze testgrootte terechtkomt. 1-test_size is onze treingrootte, dat hoeven we niet te specificeren. shuffle =Waar, schudt onze gegevens in willekeurige volgorde voordat ze worden gemorst. De sets X_train en X_test worden gebruikt om ons model aan te passen en te trainen en de testsets worden gebruikt voor testen en valideren.
Klik op om toegang te krijgen tot het CSV-bestand hier.
jakhals versus wolf
Python3
stapel Java
# import packages> import> numpy as np> import> pandas as pd> from> sklearn.model_selection>import> train_test_split> > # importing data> df>=> pd.read_csv(>'headbrain1.csv'>)> > # head of the data> print>(df.head())> > X>=> df[>'Head Size(cm^3)'>]> y>=>df[>'Brain Weight(grams)'>]> > # using the train test split function> X_train, X_test,> y_train, y_test>=> train_test_split(X,y ,> >random_state>=>104>,> >test_size>=>0.25>,> >shuffle>=>True>)> > # printing out train and test sets> > print>(>'X_train : '>)> print>(X_train.head())> print>('')> print>(>'X_test : '>)> print>(X_test.head())> print>('')> print>(>'y_train : '>)> print>(y_train.head())> print>('')> print>(>'y_test : '>)> print>(y_test.head())> |
>
binair zoeken
>
Uitgang:
Head Size(cm^3) Brain Weight(grams) 0 4512 1530 1 3738 1297 2 4261 1335 3 3777 1282 4 4177 1590 X_train : 99 3478 52 4270 184 3479 139 3171 107 3399 Name: Head Size(cm^3), dtype: int64 (177,) X_test : 66 3415 113 3594 135 3436 227 4204 68 4430 Name: Head Size(cm^3), dtype: int64 (60,) y_train : 99 1270 52 1335 184 1160 139 1127 107 1226 Name: Brain Weight(grams), dtype: int64 (177,) y_test : 66 1310 113 1290 135 1235 227 1380 68 1510 Name: Brain Weight(grams), dtype: int64 (60,)>
Voorbeeld 2:
In dit voorbeeld worden dezelfde stappen gevolgd, in plaats van de test_size op te geven, specificeren we de train_size. test_size is 1-train_size. 80% van de gegevens is een treinset, dus 20% van onze gegevens is onze testset. Als we de grootte van test- en treinsets niet specificeren, is test_size standaard 0,25. X_train en y_train hebben dezelfde vorm en indexen, aangezien y_train het label is voor X_train-functies. hetzelfde geldt voor X_test en y_test.
Python3
# import packages> import> numpy as np> import> pandas as pd> from> sklearn.model_selection>import> train_test_split> > # importing data> df>=> pd.read_csv(>'headbrain1.csv'>)> print>(df.shape)> > # head of the data> print>(df.head())> > X>=> df[>'Head Size(cm^3)'>]> y>=>df[>'Brain Weight(grams)'>]> > # using the train test split function> X_train, X_test, y_train,> y_test>=> train_test_split(X,y ,> >random_state>=>104>,> >train_size>=>0.8>, shuffle>=>True>)> > # printing out train and test sets> print>(>'X_train : '>)> print>(X_train.head())> print>(X_train.shape)> print>('')> print>(>'X_test : '>)> print>(X_test.head())> print>(X_test.shape)> print>('')> print>(>'y_train : '>)> print>(y_train.head())> print>(y_train.shape)> print>('')> print>(>'y_test : '>)> print>(y_test.head())> print>(y_test.shape)> |
jtekstveld
>
>
Uitgang:
(237, 2) Head Size(cm^3) Brain Weight(grams) 0 4512 1530 1 3738 1297 2 4261 1335 3 3777 1282 4 4177 1590 X_train : 110 3695 164 3497 58 3935 199 3297 182 4005 Name: Head Size(cm^3), dtype: int64 (189,) X_test : 66 3415 113 3594 135 3436 227 4204 68 4430 Name: Head Size(cm^3), dtype: int64 (48,) y_train : 110 1310 164 1280 58 1330 199 1220 182 1280 Name: Brain Weight(grams), dtype: int64 (189,) y_test : 66 1310 113 1290 135 1235 227 1380 68 1510 Name: Brain Weight(grams), dtype: int64 (48,)>