Šajā rakstā mēs apspriedīsim, kā sadalīt datu kopu, izmantojot scikit-learns train_test_split().
sklearn.model_selection.train_test_split() funkcija:
Metode train_test_split() tiek izmantota, lai sadalītu mūsu datus vilcienu un testa kopās. Pirmkārt, mums ir jāsadala mūsu dati funkcijās (X) un etiķetēs (y). Datu rāmis tiek sadalīts X_train, X_test, y_train un y_test. X_train un y_train komplekti tiek izmantoti apmācībai un modeļa pielāgošanai. X_test un y_test komplekti tiek izmantoti modeļa testēšanai, ja tas paredz pareizos rezultātus/iezīmes. mēs varam nepārprotami pārbaudīt vilciena izmēru un testa komplektus. Ir ieteicams mūsu vilcienu sastāvus saglabāt lielākus par testa komplektiem.
- Vilcienu kopa: apmācības datu kopa ir datu kopa, kas tika izmantota, lai atbilstu modelim. Datu kopa, kurā modelis tiek apmācīts. Šos datus modelis redz un uzzina. Testa kopa: testa datu kopa ir apmācības datu kopas apakškopa, kas tiek izmantota, lai sniegtu precīzu galīgā modeļa atbilstības novērtējumu. validācijas kopa: validācijas datu kopa ir datu paraugs no jūsu modeļa apmācības kopas, ko izmanto, lai novērtētu modeļa veiktspēju, regulējot modeļa hiperparametrus. nepietiekama atbilstība: nepietiekami pielāgotam datu modelim ir augsts kļūdu līmenis gan apmācības kopā, gan nenovērotajos datos, jo tas nespēj efektīvi attēlot attiecības starp ievades un izvades mainīgajiem. pārmērīga pielāgošana: ja statistiskais modelis precīzi sakrīt ar saviem apmācības datiem, bet algoritma mērķis tiek zaudēts, jo tas nevar precīzi izpildīt neredzamus datus, tiek saukts par pārmērīgu pielāgošanu.
Sintakse: sklearn.model_selection.train_test_split(*arrays, test_size=Nav, train_size=Nav, random_state=Nav, shuffle=True, stratify=Nav
Parametri:
*masīvi: indeksējamo objektu secība. Saraksti, nelieli masīvi, scipy-sparse matricas un pandas datu rāmji ir derīgi ievades dati. test_size: int vai float, pēc noklusējuma nav. Ja tas ir peldošs, tam ir jābūt no 0,0 līdz 1,0 un jāatspoguļo pārbaudāmās datu kopas procentuālā daļa. Ja izmanto int, tas attiecas uz kopējo testa paraugu skaitu. Ja vērtība ir None, tiek izmantots vilciena lieluma papildinājums. Tas tiks iestatīts uz 0,25, ja vilciena izmērs ir arī Nav. train_size: int vai float, pēc noklusējuma nav. random_state : int, pēc noklusējuma nav. Kontrolē, kā dati tiek sajaukti pirms sadalīšanas. Lai iegūtu atkārtojamu izvadi vairākos funkciju izsaukumos, ievadiet int. shuffle: Būla objekts , pēc noklusējuma True. Vai dati ir jāsajauc pirms sadalīšanas. Stratify ir jābūt None, ja shuffle=False. stratificēt: masīvam līdzīgs objekts , pēc noklusējuma tas ir Nav . Ja ir atlasīts Neviens, dati tiek stratificēti, izmantojot tos kā klases iezīmes.
Atgriež:
sadalīšana: Vilcienu testa ievades sadalījums tiek attēlots kā saraksts.
Darbības, lai sadalītu datu kopu:
1. darbība. Importējiet nepieciešamās pakotnes vai moduļus:
Šajā solī mēs importējam nepieciešamās pakotnes vai moduļus darba python vidē.
Python3
# import packages> import> numpy as np> import> pandas as pd> from> sklearn.model_selection> import> train_test_split> |
>
>
2. darbība. Importējiet datu rāmi/datu kopu:
Šeit mēs ielādējam CSV, izmantojot pd.read_csv() metodi no pandas, un iegūstam datu kopas formu, izmantojot funkciju shape().
Izmantotais CSV:

Python3
# importing data> df> => pd.read_csv(> 'prediction.csv'> )> print> (df.shape)> |
jdbc
>
>
Izvade:
(13, 3)>
3. darbība. Iegūstiet X un Y funkciju mainīgos:
Šeit mēs piešķiram X un Y mainīgo, kuros X iezīmes mainīgajam ir neatkarīgi mainīgie, bet y iezīmes mainīgajam ir atkarīgs mainīgais.
Python3
X> => df[> 'area'> ]> y> => df[> 'prices'> ]> |
>
>
skābes īpašības
4. darbība. Izmantojiet vilciena testa sadalījuma klasi, lai sadalītu datus vilciena un testa komplektos.
Šeit tiek izmantota klase train_test_split() no sklearn.model_selection, lai sadalītu mūsu datus vilcienu un testu kopās, kur metodes mainīgie tiek norādīti kā ievade. test_size nosaka datu daļu, kas tiks iekļauta testa kopās, un datu reproducējamībai tiek izmantots nejaušs stāvoklis.
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> )> |
>
>
Piemērs:
Šajā piemērā ir importēts fails “predictions.csv”. Atribūts df.shape tiek izmantots, lai izgūtu datu rāmja formu. Datu rāmja forma ir (13,3). Pazīmju kolonnas tiek ņemtas mainīgajā X, un iznākuma kolonna tiek ņemta mainīgajā y. X un y mainīgie tiek nodoti, izmantojot metodi train_test_split(), lai sadalītu datu rāmi vilcienu un testa kopās. Datu reproducējamībai tiek izmantots izlases stāvokļa parametrs. testa_izmērs ir norādīts kā 0,25, kas nozīmē, ka 25% datu nonāk testa kopās. 4 no 13 rindām datu ietvarā nonāk testa kopās. 75% datu nonāk vilcienu komplektos, kas ir 9 rindas no 13 rindām. Vilcienu komplekti tiek izmantoti, lai pielāgotu un apmācītu mašīnmācības modeli. Testu komplekti tiek izmantoti novērtēšanai.
Izmantotais 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)> |
>
>
Izvade:
(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,)>
Piemērs:
Šajā piemērā tiek veiktas šādas darbības:
- Nepieciešamās pakas tiek importētas.
- Advertising.csv datu kopa tiek ielādēta un notīrīta, un nulles vērtības tiek noņemtas.
- tiek izveidoti funkciju un mērķa masīvi (X andy).
- Izveidotie masīvi tiek sadalīti vilcienu un testa komplektos. 30% datu kopas nonāk testa kopā, kas nozīmē, ka 70% datu ir vilcienu kopa.
- Tiek izveidots standarta mērogošanas objekts.
- X_train ir iekļauts mērogā.
- X_train un X_test tiek pārveidoti, izmantojot transform() metodi.
- Tiek izveidots vienkāršs lineārās regresijas modelis
- Vilcienu komplekti iederas modelī.
- Prognožu veikšanai X_test komplektā tiek izmantota prognozes() metode.
- Metrika mean_squared_error() tiek izmantota modeļa novērtēšanai.
Lai skatītu un lejupielādētu šajā piemērā izmantoto CSV failu, noklikšķiniet uz šeit .
Python3
saistītais saraksts
# 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))> |
>
>
Izvade:
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
Piemērs:
Šajā piemērā mēs izmantosim K tuvāko kaimiņu klasifikatora modeli.
Šajā piemērā tiek veiktas šādas darbības:
- Nepieciešamās pakas tiek importētas.
- varavīksnenes dati tiek ielādēti no sklearn.datasets.
- tiek izveidoti funkciju un mērķa masīvi (X andy).
- Izveidotie masīvi tiek sadalīti vilcienu un testa komplektos. 30% datu kopas nonāk testa kopā, kas nozīmē, ka 70% datu ir vilcienu kopa.
- Pamata Knn modelis tiek izveidots, izmantojot KNeighborsClassifier klasi.
- Vilcienu komplekti iederas knn modelī.
- Prognožu veikšanai X_test komplektā tiek izmantota prognozes() metode.
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))> |
>
komanda mezglā js
>
Izvade:
[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]