logo

Sådan laver du Train Test Split ved hjælp af Sklearn i Python

Lad os i denne artikel lære, hvordan man laver en togtestopdeling ved hjælp af Sklearn i Python.

Train Test Split ved hjælp af Sklearn

Train_test_split() metoden bruges til at opdele vores data i tog- og testsæt.



Først skal vi opdele vores data i funktioner (X) og etiketter (y). Datarammen bliver opdelt i X_train, X_test, y_train og y_test. X_train og y_train sæt bruges til træning og tilpasning af modellen. X_test- og y_test-sættene bruges til at teste modellen, hvis den forudsiger de rigtige output/etiketter. vi kan eksplicit teste størrelsen af ​​toget og testsættene. Det foreslås at holde vores togsæt større end testsættene.

Togsæt: Træningsdatasættet er et sæt data, der blev brugt til at passe til modellen. Datasættet, som modellen er trænet på. Disse data ses og læres af modellen.

flette sortering java

Test sæt: Testdatasættet er en delmængde af træningsdatasættet, der bruges til at give en nøjagtig evaluering af en endelig modeltilpasning.



valideringssæt: Et valideringsdatasæt er et udsnit af data fra din models træningssæt, der bruges til at estimere modellens ydeevne, mens modellens hyperparametre justeres.

som standard er 25 % af vores data testsæt, og 75 % data går til træningstests.

Syntaks: sklearn.model_selection.train_test_split()



parametre:

    *arrays: sekvens af indekserbare. Lister, numpy arrays, scipy-sparse matricer og panda-datarammer er alle gyldige input. test_size: int eller float, som standard Ingen. Hvis den flyder, skal den være mellem 0,0 og 1,0 og repræsentere procentdelen af ​​datasættet, der skal testes opdeling. Hvis int bruges, refererer det til det samlede antal testprøver. Hvis værdien er Ingen, bruges komplementet til togstørrelsen. Den indstilles til 0,25, hvis togstørrelsen også er Ingen. train_size: int eller float, som standard Ingen. random_state: int, som standard Ingen. Styrer, hvordan data blandes, før opdelingen implementeres. For at gentage output på tværs af flere funktionskald skal du sende en int.
    shuffle: boolesk objekt , som standard True. Hvorvidt dataene skal blandes før opdeling. Stratify skal være Ingen, hvis shuffle=False. stratify: array-lignende objekt, som standard er det Ingen. Hvis Ingen er valgt, stratificeres dataene ved at bruge disse som klasseetiketter.

vender tilbage: opdeling: liste

Eksempel 1:

Pakkerne numpy, pandaer og scikit-learn importeres. CSV-filen importeres. X indeholder funktionerne, og y er etiketterne. vi opdeler datarammen i X og y og udfører togtestsplit på dem. random_state fungerer som et numpy frø, det bruges til data reproducerbarhed. test_size er angivet som 0,25, det betyder, at 25% af vores data går ind i vores teststørrelse. 1-test_size er vores togstørrelse, det behøver vi ikke at angive. shuffle =Sandt, blander vores data før spild. X_train- og X_test-sættene bruges til at passe og træne vores model, og testsættene bruges til test og validering.

Klik på for at få adgang til CSV-filen her.

Python3


java gør mens eksempel



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

>

>

Produktion:

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

Eksempel 2:

I dette eksempel følges de samme trin, i stedet for at specificere test_size angiver vi tog_size. test_size er 1-tog_size. 80 % af dataene er togsæt, så 20 % af vores data er vores testsæt. Hvis vi ikke specificerer størrelserne på test- og togsæt som standard, vil test_size være 0,25. X_train og y_train har samme form og indekser, da y_train er etiketten for X_train-funktioner. det samme gælder X_test og 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)>

arraylist sorteret
>

>

Produktion:

(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,)>