logo

Tietojoukon jakaminen scikit-learnin train_test_split()-funktiolla

Tässä artikkelissa keskustelemme siitä, kuinka tietojoukko jaetaan käyttämällä scikit-learnsin train_test_split().

sklearn.model_selection.train_test_split()-funktio:

Train_test_split()-menetelmää käytetään tietojen jakamiseen juna- ja testijoukkoon. Ensin meidän on jaettava tietomme ominaisuuksiin (X) ja tunnisteisiin (y). Tietokehys jaetaan X_trainiin, X_testiin, y_trainiin ja y_testiin. Koulutukseen ja mallin sovittamiseen käytetään X_train- ja y_train -sarjoja. X_test- ja y_test-joukkoja käytetään mallin testaamiseen, jos se ennustaa oikeat tulosteet/tunnisteet. voimme eksplisiittisesti testata junan ja testisarjojen kokoa. On suositeltavaa pitää junasarjamme koesarjaa suurempina.

    Junajoukko: Harjoitustietojoukko on joukko tietoja, joita käytettiin mallin sovittamiseksi. Tietojoukko, johon mallia opetetaan. Malli näkee ja oppii nämä tiedot. Testijoukko: Testitietojoukko on harjoitustietojoukon osajoukko, jota käytetään antamaan tarkka arvio lopullisesta mallisovituksesta. validointijoukko: Validointitietojoukko on mallisi harjoitusjoukon tiedoista näyte, jota käytetään mallin suorituskyvyn arvioimiseen, kun mallin hyperparametreja viritetään. alisovitus: Alasovitetulla tietomallilla on korkea virheprosentti sekä harjoitusjoukossa että havaitsemattomissa tiedoissa, koska se ei pysty edustamaan tehokkaasti tulo- ja lähtömuuttujien välistä suhdetta. ylisovitus: kun tilastollinen malli vastaa harjoitusdataa tarkasti, mutta algoritmin tavoite menetetään, koska se ei pysty suorittamaan tarkasti näkymätöntä dataa vastaan, kutsutaan ylisovitukseksi

Syntaksi: sklearn.model_selection.train_test_split(*arrays, test_size=Ei mitään, train_size=Ei mitään, random_state=Ei mitään, shuffle=True, stratify=Ei mitään



Parametrit:

    *taulukot: indeksoitavien kohteiden sarja. Listat, numpy-taulukot, scipy-sparse-matriisit ja panda-tietokehykset ovat kaikki kelvollisia syötteitä. test_size: int tai float, oletuksena Ei mitään. Jos kelluva, sen tulee olla välillä 0,0–1,0 ja edustaa testattavan datajoukon prosenttiosuutta. Jos käytetään int:tä, se viittaa testinäytteiden kokonaismäärään. Jos arvo on Ei mitään, käytetään junan koon komplementtia. Se asetetaan arvoon 0,25, jos junan koko on myös Ei mitään. train_size: int tai float, oletuksena Ei mitään. random_state : int, oletuksena Ei mitään. Ohjaa, kuinka tiedot sekoitetaan ennen jaon toteuttamista. Jos haluat toistettavan tulosteen useissa funktiokutsuissa, välitä int. shuffle: Boolen objekti , oletuksena True. Pitäisikö tiedot sekoittaa ennen jakamista. Stratify on oltava Ei mitään, jos shuffle=False. stratify: array-like object , oletuksena se on Ei mitään . Jos valitaan Ei mitään, tiedot kerrostetaan käyttämällä näitä luokkatunnisteina.

Palautukset:

jakaminen: Tulojen junatestin jako esitetään luettelona.

Tietojoukon jakamisen vaiheet:

Vaihe 1: Tuo tarvittavat paketit tai moduulit:

Tässä vaiheessa tuomme tarvittavat paketit tai moduulit toimivaan python-ympäristöön.

Python 3




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

>

>

Vaihe 2: Tuo tietokehys/tietojoukko:

Täällä lataamme CSV:n pd.read_csv()-menetelmällä pandoilta ja saamme tietojoukon muodon shape()-funktiolla.

Käytetty CSV:

Python 3

joka perusti koulun




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

>

>

Lähtö:

(13, 3)>

Vaihe 3: Hanki X- ja Y-ominaisuusmuuttujat:

Tässä määritetään X- ja Y-muuttujat, joissa X-ominaisuusmuuttujalla on riippumattomia muuttujia ja y-ominaisuusmuuttujalla on riippuvainen muuttuja.

Python 3




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

>

>

lataa youtube-video vlc:llä

Vaihe 4: Käytä junatestin jakoluokkaa tietojen jakamiseen juna- ja testijoukkoon:

Tässä luokkaa train_test_split() osoitteesta sklearn.model_selection käytetään jakamaan tietomme juna- ja testijoukkoon, joissa ominaisuusmuuttujat annetaan syötteenä menetelmässä. test_size määrittää sen osan tiedosta, joka menee testisarjoihin, ja satunnaista tilaa käytetään tietojen toistettavuuteen.

Python 3




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

>

>

Esimerkki:

Tässä esimerkissä 'predictions.csv'-tiedosto tuodaan. df.shape -attribuuttia käytetään tietokehyksen muodon hakemiseen. Tietokehyksen muoto on (13,3). Ominaisuussarakkeet otetaan X-muuttujaan ja tulossarake otetaan y-muuttujaan. X- ja y-muuttujat välitetään train_test_split()-menetelmässä datakehyksen jakamiseksi juna- ja testijoukkoon. Satunnaistilaparametria käytetään tietojen toistettavuuteen. test_size on 0,25, mikä tarkoittaa, että 25% tiedoista menee testijoukkoon. 4 tietokehyksen 13 rivistä menee testisarjoihin. 75 % tiedoista menee junasarjoihin, mikä on 9 riviä 13 rivistä. Junasarjoja käytetään koneoppimismallin sovittamiseen ja kouluttamiseen. Testisarjoja käytetään arvioinnissa.

Käytetty CSV:

Python 3




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

>

>

Lähtö:

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

Esimerkki:

Tässä esimerkissä suoritetaan seuraavat vaiheet:

  • Tarvittavat paketit tuodaan maahan.
  • Advertising.csv-tietojoukko ladataan ja puhdistetaan, ja nolla-arvot jätetään pois.
  • ominaisuus- ja kohdetaulukot luodaan (X andy).
  • Luodut taulukot jaetaan juna- ja testijoukkoon. 30 % datajoukosta menee testijoukkoon, mikä tarkoittaa, että 70 % tiedoista on junajoukkoa.
  • Normaali skaalausobjekti luodaan.
  • X_train sopii skaalaimeen.
  • X_train ja X_test muunnetaan transform()-menetelmällä.
  • Luodaan yksinkertainen lineaarinen regressiomalli
  • Junasarjat sopivat malliin.
  • ennustaa()-menetelmää käytetään ennusteiden suorittamiseen X_test-joukossa.
  • mean_squared_error() -metriikkaa käytetään mallin arvioimiseen.

Voit tarkastella ja ladata tässä esimerkissä käytetyn CSV-tiedoston napsauttamalla tässä .

Python 3




mysql lisää

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

>

>

Lähtö:

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

Esimerkki:

Tässä esimerkissä käytämme K-lähimpien naapurien luokittelumallia.

Tässä esimerkissä suoritetaan seuraavat vaiheet:

  • Tarvittavat paketit tuodaan maahan.
  • iiristiedot ladataan sklearn.datasets -tiedostosta.
  • ominaisuus- ja kohdetaulukot luodaan (X andy).
  • Luodut taulukot jaetaan juna- ja testijoukkoon. 30 % datajoukosta menee testijoukkoon, mikä tarkoittaa, että 70 % tiedoista on junajoukkoa.
  • Knn-perusmalli luodaan käyttämällä KNeighborsClassifier-luokkaa.
  • Junasarjat sopivat knn-malliin.
  • ennustaa()-menetelmää käytetään ennusteiden suorittamiseen X_test-joukossa.

Python 3




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

>

kuinka ladata youtube-video vlc

>

Lähtö:

[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]