V tem članku bomo razpravljali o tem, kako razdeliti nabor podatkov z uporabo train_test_split() scikit-learns.
funkcija sklearn.model_selection.train_test_split():
Metoda train_test_split() se uporablja za razdelitev naših podatkov v nize za vlak in test. Najprej moramo naše podatke razdeliti na značilnosti (X) in oznake (y). Podatkovni okvir je razdeljen na X_train, X_test, y_train in y_test. Kompleti X_train in y_train se uporabljajo za šolanje in montažo modela. Nabora X_test in y_test se uporabljata za testiranje modela, če napoveduje prave rezultate/oznake. lahko eksplicitno testiramo velikost vlaka in testnih nizov. Predlagamo, da so naše vlakovne garniture večje od testnih.
- Nabor vlakov: nabor podatkov usposabljanja je niz podatkov, ki je bil uporabljen za prilagajanje modelu. Nabor podatkov, na podlagi katerega se uri model. Te podatke model vidi in se jih nauči. Preizkusni nabor: Preizkusni nabor podatkov je podnabor nabora podatkov o usposabljanju, ki se uporablja za natančno oceno prileganja končnega modela. validacijski nabor: validacijski nabor podatkov je vzorec podatkov iz učnega nabora vašega modela, ki se uporablja za oceno zmogljivosti modela med nastavljanjem hiperparametrov modela. premajhno prilagajanje: Podatkovni model, ki je premalo prilagojen, ima visoko stopnjo napak tako pri učnem nizu kot pri neopazovanih podatkih, ker ne more učinkovito predstaviti razmerja med vhodnimi in izhodnimi spremenljivkami. prekomerno prilagajanje: ko se statistični model natančno ujema s svojimi podatki o usposabljanju, vendar je cilj algoritma izgubljen, ker se ne more natančno izvajati proti nevidnim podatkom, se imenuje prekomerno prilagajanje
Sintaksa: sklearn.model_selection.train_test_split(*matrike, test_size=Brez, train_size=Brez, random_state=Brez, shuffle=True, stratify=Brez
Parametri:
*matrike: zaporedje indeksiranih. Seznami, matrike numpy, scipy-sparse matrike in podatkovni okviri pandas so vsi veljavni vnosi. test_size: int ali float, privzeto Brez. Če je plavajoča, mora biti med 0,0 in 1,0 in predstavljati odstotek nabora podatkov za preskusno razdelitev. Če je uporabljeno int, se nanaša na skupno število testnih vzorcev. Če je vrednost None, se uporabi komplement velikosti vlaka. Nastavljena bo na 0,25, če je tudi velikost vlaka Brez. train_size: int ali float, privzeto Brez. random_state : int, privzeto Brez. Nadzoruje, kako se podatki premešajo, preden se izvede delitev. Za ponovljiv izhod v več klicih funkcij posredujte int. shuffle: logični objekt, privzeto True. Ali je treba podatke pred delitvijo premešati ali ne. Stratify mora biti None, če je shuffle=False. stratify: array-like object , privzeto je None . Če je izbrano Brez, so podatki stratificirani z uporabo teh kot oznak razreda.
Vrne:
cepitev: Razdelitev vnosov vlak-test je predstavljena kot seznam.
Koraki za razdelitev nabora podatkov:
1. korak: uvozite potrebne pakete ali module:
V tem koraku uvozimo potrebne pakete ali module v delujoče okolje python.
Python3
# import packages> import> numpy as np> import> pandas as pd> from> sklearn.model_selection> import> train_test_split> |
>
>
2. korak: uvozite podatkovni okvir/nabor podatkov:
Tukaj naložimo CSV z metodo pd.read_csv() iz pand in pridobimo obliko nabora podatkov s funkcijo shape().
Uporabljen CSV:

Python3
10 ml do oz
# importing data> df> => pd.read_csv(> 'prediction.csv'> )> print> (df.shape)> |
>
>
Izhod:
(13, 3)>
3. korak: pridobite spremenljivke funkcij X in Y:
Tukaj dodeljujemo spremenljivki X in Y, pri čemer ima spremenljivka funkcije X neodvisne spremenljivke, spremenljivka funkcije y pa ima odvisno spremenljivko.
Python3
X> => df[> 'area'> ]> y> => df[> 'prices'> ]> |
>
>
niz struktur v jeziku c
4. korak: Uporabite razdeljeni razred testiranja vlaka, da razdelite podatke v sklope vlaka in testa:
Tukaj je razred train_test_split() iz sklearn.model_selection uporabljen za razdelitev naših podatkov v nize vlakov in testov, kjer so spremenljivke funkcij podane kot vhod v metodo. test_size določa del podatkov, ki bo šel v preskusne nize, naključno stanje pa se uporablja za ponovljivost podatkov.
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> )> |
>
>
primer:
V tem primeru je uvožena datoteka »predictions.csv«. Atribut df.shape se uporablja za pridobitev oblike podatkovnega okvira. Oblika podatkovnega okvira je (13,3). Stolpci funkcij so vzeti v spremenljivki X, stolpec rezultatov pa v spremenljivki y. Spremenljivki X in y se posredujeta v metodi train_test_split(), da se podatkovni okvir razdeli na nize vlakov in testov. Parameter naključnega stanja se uporablja za ponovljivost podatkov. test_size je podana kot 0,25, kar pomeni, da gre 25 % podatkov v testne nize. 4 od 13 vrstic v podatkovnem okviru gredo v testne nize. 75 % podatkov gre v komplete vlakov, kar je 9 vrstic od 13 vrstic. Kompleti vlakov se uporabljajo za prilagajanje in usposabljanje modela strojnega učenja. Testni kompleti se uporabljajo za ocenjevanje.
Uporabljen CSV:

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)> |
>
>
Izhod:
(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,)>
primer:
V tem primeru se izvedejo naslednji koraki:
- Potrebni paketi so uvoženi.
- Nabor podatkov Advertising.csv se naloži in očisti, ničelne vrednosti pa se izbrišejo.
- ustvarjeni so funkcijski in ciljni nizi (X andy).
- Ustvarjeni nizi so razdeljeni na nize vlakov in testne nize. 30 % nabora podatkov gre v testni nabor, kar pomeni, da je 70 % podatkov nabor vlakov.
- Ustvarjen je standardni objekt merilnika.
- X_train se prilega skalerju.
- X_train in X_test se transformirata z uporabo metode transform().
- Ustvari se preprost model linearne regresije
- Garniture vlakov se prilegajo modelu.
- metoda predict() se uporablja za izvajanje napovedi na nizu X_test.
- metrika mean_squared_error() se uporablja za ovrednotenje modela.
Za ogled in prenos datoteke CSV, uporabljene v tem primeru, kliknite tukaj .
Python3
velikosti čajne žličke
# 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))> |
>
>
Izhod:
polje ([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
primer:
V tem primeru bomo uporabili model klasifikatorja K-najbližjih sosedov.
V tem primeru se izvedejo naslednji koraki:
- Potrebni paketi so uvoženi.
- podatki šarenice se naložijo iz sklearn.datasets.
- ustvarjeni so funkcijski in ciljni nizi (X andy).
- Ustvarjeni nizi so razdeljeni na nize vlakov in testne nize. 30 % nabora podatkov gre v testni nabor, kar pomeni, da je 70 % podatkov nabor vlakov.
- Osnovni model Knn je ustvarjen z uporabo razreda KNeighborsClassifier.
- Vlakne garniture ustrezajo modelu knn.
- metoda predict() se uporablja za izvajanje napovedi na nizu X_test.
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))> |
>
java je naslednja
>
Izhod:
[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]