logo

Hur man gör Train Test Split med Sklearn i Python

I den här artikeln ska vi lära oss hur man gör en tågtestdelning med Sklearn i Python.

Tågprovsdelning med Sklearn

Metoden train_test_split() används för att dela upp vår data i tåg- och testset.



Först måste vi dela upp vår data i funktioner (X) och etiketter (y). Dataramen delas in i X_train, X_test , y_train och y_test. X_train och y_train set används för träning och anpassning av modellen. Uppsättningarna X_test och y_test används för att testa modellen om den förutsäger rätt utdata/etiketter. vi kan uttryckligen testa tågets storlek och testset. Det rekommenderas att hålla våra tågset större än testseten.

Tågset: Utbildningsdataset är en uppsättning data som användes för att passa modellen. Datauppsättningen som modellen tränas på. Denna data ses och lärs av modellen.

konstruktör i java

Testset: Testdatauppsättningen är en delmängd av träningsdatauppsättningen som används för att ge en korrekt utvärdering av en slutlig modellanpassning.



valideringsuppsättning: En valideringsdatauppsättning är ett urval av data från din modells träningsuppsättning som används för att uppskatta modellens prestanda samtidigt som man ställer in modellens hyperparametrar.

som standard är 25 % av vår data testuppsättning och 75 % data går till träningstester.

Syntax: sklearn.model_selection.train_test_split()



parametrar:

    *matriser: sekvens av indexerbara. Listor, numpy arrays, scipy-glesa matriser och pandas dataramar är alla giltiga indata. test_size: int eller float, som standard Ingen. Om den flyter bör den vara mellan 0,0 och 1,0 och representera procentandelen av datamängden som ska testas. Om int används avser det det totala antalet testprover. Om värdet är Inget används komplementet till tågets storlek. Den kommer att ställas in på 0,25 om tågstorleken också är Ingen. train_size: int eller float, som standard Ingen. random_state : int, som standard Ingen. Styr hur data blandas innan uppdelningen implementeras. För repeterbar utdata över flera funktionsanrop, skicka en int.
    shuffle: booleskt objekt , som standard True. Huruvida data ska blandas före uppdelning eller inte. Stratifiera måste vara Ingen om shuffle=False. stratify: array-like object , som standard är det None. Om Ingen väljs stratifieras data med dessa som klassetiketter.

returnerar: delning: lista

Exempel 1:

Paketen numpy, pandas och scikit-learn importeras. CSV-filen importeras. X innehåller funktionerna och y är etiketterna. vi delar upp dataramen i X och y och utför tågtestdelning på dem. random_state fungerar som ett numpy frö, det används för datareproducerbarhet. test_size anges som 0,25 , det betyder att 25 % av vår data går in i vår teststorlek. 1-test_size är vår tågstorlek, det behöver vi inte ange. shuffle =Sant, blandar vår data innan den spills. X_train- och X_test-seten används för att passa och träna vår modell och testseten används för att testa och validera.

Klicka på för att komma åt CSV-filen här.

varför sträng oföränderlig i java

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

>

sträng jämför c#

reguljära uttryck i java
>

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

Exempel 2:

I det här exemplet följs samma steg, istället för att specificera test_size anger vi train_size. test_size är 1-train_size. 80% av datan är tåguppsättning, så 20% av vår data är vår testuppsättning. Om vi ​​inte anger storlekarna på test- och tåguppsättningar som standard kommer test_size att vara 0,25. X_train och y_train har samma form och index, eftersom y_train är etiketten för X_train-funktioner. detsamma gäller X_test och 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)>

c struktur i struktur

>

>

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