logo

Slik deler du datasettet med scikit-learns train_test_split()-funksjon

I denne artikkelen vil vi diskutere hvordan du deler et datasett ved å bruke scikit-learns' train_test_split().

sklearn.model_selection.train_test_split() funksjon:

Train_test_split()-metoden brukes til å dele opp dataene våre i tog- og testsett. Først må vi dele inn dataene våre i funksjoner (X) og etiketter (y). Datarammen blir delt inn i X_train, X_test, y_train og y_test. X_train og y_train sett brukes til trening og tilpasning av modellen. X_test- og y_test-settene brukes til å teste modellen hvis den forutsier de riktige utgangene/etikettene. vi kan eksplisitt teste størrelsen på toget og testsettene. Det foreslås å holde våre togsett større enn testsettene.

    Togsett: Treningsdatasettet er et sett med data som ble brukt for å passe til modellen. Datasettet som modellen er trent på. Disse dataene blir sett og lært av modellen. Testsett: Testdatasettet er et undersett av treningsdatasettet som brukes til å gi en nøyaktig evaluering av en endelig modelltilpasning. valideringssett: Et valideringsdatasett er et utvalg av data fra modellens treningssett som brukes til å estimere modellytelse mens du justerer modellens hyperparametre. undertilpasning: En datamodell som er undertilpasset har en høy feilrate både på treningssettet og uobserverte data fordi den ikke er i stand til å representere forholdet mellom inngangs- og utdatavariablene effektivt. overfitting: når en statistisk modell matcher treningsdataene nøyaktig, men algoritmens mål går tapt fordi den ikke er i stand til å utføre nøyaktig mot usett data, kalles overfitting

Syntaks: sklearn.model_selection.train_test_split(*arrays, test_size=Ingen, train_size=Ingen, random_state=Ingen, shuffle=True, stratify=Ingen



Parametere:

    *matriser: sekvens av indekserbare. Lister, numpy arrays, scipy-sparse matriser og panda-datarammer er alle gyldige innganger. test_size: int eller float, som standard Ingen. Hvis den flyter, skal den være mellom 0,0 og 1,0 og representere prosentandelen av datasettet som skal testes. Hvis int brukes, refererer det til det totale antallet testprøver. Hvis verdien er Ingen, brukes komplementet til togstørrelsen. Den settes 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 dataene stokkes før delingen implementeres. For repeterbar utgang på tvers av flere funksjonskall, send en int. shuffle: boolesk objekt , som standard Sann. Hvorvidt dataene skal blandes før de deles. Stratify må være Ingen hvis shuffle=False. stratify: array-like object , som standard er det Ingen . Hvis Ingen er valgt, blir dataene stratifisert ved å bruke disse som klasseetiketter.

Returnerer:

splitting: Togtestdelingen av innganger er representert som en liste.

Trinn for å dele datasettet:

Trinn 1: Importer de nødvendige pakkene eller modulene:

I dette trinnet importerer vi de nødvendige pakkene eller modulene til arbeidspythonmiljøet.

Python3


java-streng til int



# import packages> import> numpy as np> import> pandas as pd> from> sklearn.model_selection>import> train_test_split>

>

>

Trinn 2: Importer datarammen/datasettet:

Her laster vi CSV-en ved å bruke pd.read_csv()-metoden fra pandas og får formen til datasettet ved å bruke shape()-funksjonen.

CSV brukt:

Python3




# importing data> df>=> pd.read_csv(>'prediction.csv'>)> print>(df.shape)>

>

>

Produksjon:

(13, 3)>

Trinn 3: Få X- og Y-funksjonsvariabler:

Her tilordner vi X- og Y-variabelen der X-funksjonsvariabelen har uavhengige variabler og y-funksjonsvariabelen har en avhengig variabel.

Python3




X>=> df[>'area'>]> y>=>df[>'prices'>]>

>

>

Trinn 4: Bruk klassen for togtestdeling til å dele opp data i tog- og testsett:

Her brukes train_test_split()-klassen fra sklearn.model_selection for å dele opp dataene våre i tog- og testsett hvor funksjonsvariabler er gitt som input i metoden. test_size bestemmer delen av dataene som skal gå inn i testsett og en tilfeldig tilstand brukes for datareproduserbarhet.

Python3




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

>

>

Eksempel:

I dette eksemplet importeres filen «predictions.csv». df.shape-attributtet brukes til å hente formen på datarammen. Formen på datarammen er (13,3). Funksjonskolonnene er tatt i X-variabelen og utfallskolonnen er tatt i y-variabelen. X- og y-variabler sendes i train_test_split()-metoden for å dele datarammen i tog- og testsett. Parameteren tilfeldig tilstand brukes for datareproduserbarhet. test_size er gitt som 0,25 som betyr at 25 % av dataene går inn i testsettene. 4 av 13 rader i datarammen går inn i testsettene. 75 % av dataene går inn i togsettene, som er 9 rader av 13 rader. Togsettene brukes til å tilpasse og trene maskinlæringsmodellen. Testsettene brukes til evaluering.

CSV brukt:

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(>'prediction.csv'>)> print>(df.shape)> # head of the data> print>(>'Head of the dataframe : '>)> print>(df.head())> print>(df.columns)> X>=> df[>'area'>]> y>=>df[>'prices'>]> # 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>(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)>

>

>

Produksjon:

(13, 3) Head of the dataframe : Unnamed: 0 area prices 0 0 1000 316404.109589 1 1 1500 384297.945205 2 2 2300 492928.082192 3 3 3540 661304.794521 4 4 4120 740061.643836 Index(['Unnamed: 0', 'area', 'prices'], dtype='object') X_train : 3 3540 7 3460 4 4120 0 1000 8 4750 Name: area, dtype: int64 (9,) X_test : 12 7100 2 2300 11 8600 10 9000 Name: area, dtype: int64 (4,) y_train : 3 661304.794521 7 650441.780822 4 740061.643836 0 316404.109589 8 825607.876712 Name: prices, dtype: float64 (9,) y_test : 12 1.144709e+06 2 4.929281e+05 11 1.348390e+06 10 1.402705e+06 Name: prices, dtype: float64 (4,)>

Eksempel:

I dette eksemplet utføres følgende trinn:

  • De nødvendige pakkene importeres.
  • Advertising.csv-datasettet lastes og renses, og nullverdier slettes.
  • funksjons- og målmatriser opprettes (X andy).
  • Arrayene som lages er delt inn i tog- og testsett. 30 % av datasettet går inn i testsettet, noe som betyr at 70 % data er et togsett.
  • Et standard skaleringsobjekt opprettes.
  • X_train er passet inn i scaler.
  • X_train og X_test transformeres ved hjelp av transform()-metoden.
  • En enkel lineær regresjonsmodell lages
  • Togsett passer i modellen.
  • predict()-metoden brukes til å utføre prediksjoner på X_test-settet.
  • mean_squared_error() metrikk brukes til å evaluere modellen.

For å se og laste ned CSV-filen som brukes i dette eksemplet, klikk her .

Python3




# import packages> import> pandas as pd> import> numpy as np> from> sklearn.model_selection>import> train_test_split> from> sklearn.preprocessing>import> StandardScaler> from> sklearn.linear_model>import> LinearRegression> from> sklearn.metrics>import> mean_squared_error> df>=> pd.read_csv(>'Advertising.csv'>)> # dropping rows which have null values> df.dropna(inplace>=>True>,axis>=>0>)> y>=> df[>'sales'>]> X>=> df.drop(>'sales'>,axis>=>1>)> # splitting the dataframe into train and test sets> X_train,X_test,y_train,y_test>=> train_test_split(> >X,y,test_size>=>0.3>,random_state>=>101>)> scaler>=> StandardScaler()> scaler.fit(X_train)> X_train>=> scaler.transform(X_train)> X_test>=> scaler.transform(X_test)> model>=> LinearRegression().fit(X_train,y_train)> y_pred>=> model.predict(X_test)> print>(y_pred)> print>(mean_squared_error(y_test,y_pred))>

>

>

Produksjon:

array([19.82000933, 14.23636718, 12.80417236, 7.75461569, 8.31672266,

15.4001915, 11.6590983, 15.22650923, 15.53524916, 19.46415132,

17.21364106, 16.69603229, 16.46449309, 10.15345178, 13.44695953,

24.71946196, 18.67190453, 15.85505154, 14.45450049, 9.91684409,

10.41647177, 4.61335238, 17.41531451, 17.31014955, 21.72288151,

5.87934089, 11.29101265, 17.88733657, 21.04225992, 12.32251227,

14.4099317, 15.05829814, 10.2105313, 7.28532072, 12.66133397,

23.25847491, 18.87101505, 4.55545854, 19.79603707, 9.21203026,

10.24668718, 8.96989469, 13.33515217, 20.69532628, 12.17013119,

21.69572633, 16.7346457, 22.16358256, 5.34163764, 20.43470231,

7.58252563, 23.38775769, 10.2270323, 12.33473902, 24.10480458,

9.88919804, 21.7781076 ])

2,7506859249500466

Eksempel:

I dette eksemplet skal vi bruke klassifiseringsmodellen K-nærmeste naboer.

I dette eksemplet utføres følgende trinn:

  • De nødvendige pakkene importeres.
  • iris-data lastes fra sklearn.datasets.
  • funksjons- og målmatriser opprettes (X andy).
  • Arrayene som lages er delt inn i tog- og testsett. 30 % av datasettet går inn i testsettet, noe som betyr at 70 % data er et togsett.
  • En grunnleggende Knn-modell lages ved å bruke KNeighborsClassifier-klassen.
  • Togsett passer i knn-modellen.
  • predict()-metoden brukes til å utføre prediksjoner på X_test-settet.

Python3




# Import packages> from> sklearn.neighbors>import> KNeighborsClassifier> from> sklearn.model_selection>import> train_test_split> from> sklearn.datasets>import> load_iris> > # Load the data> irisData>=> load_iris()> > # Create feature and target arrays> X>=> irisData.data> y>=> irisData.target> > # Split data into train and test sets> X_train, X_test, y_train, y_test>=> train_test_split(> >X, y, test_size>=> 0.2>, random_state>=>42>)> > knn>=> KNeighborsClassifier(n_neighbors>=>1>)> > knn.fit(X_train, y_train)> > # predicting on the X_test data set> print>(knn.predict(X_test))>

>

>

Produksjon:

[1 0 2 1 1 0 1 2 1 1 2 0 0 0 0 1 2 1 1 2 0 2 0 2 2 2 2 2 0 0]