În acest articol, vom discuta despre cum să împărțim un set de date folosind train_test_split() de la scikit-learns.
Funcția sklearn.model_selection.train_test_split():
Metoda train_test_split() este folosită pentru a ne împărți datele în seturi de tren și de testare. În primul rând, trebuie să ne împărțim datele în caracteristici (X) și etichete (y). Cadrul de date este împărțit în X_train, X_test, y_train și y_test. Seturile X_train și y_train sunt folosite pentru antrenarea și potrivirea modelului. Seturile X_test și y_test sunt folosite pentru testarea modelului dacă prezice ieșirile/etichetele corecte. putem testa în mod explicit dimensiunea trenului și seturile de testare. Se recomandă să păstrăm garniturile noastre de tren mai mari decât seturile de testare.
- Set de tren: Setul de date de antrenament este un set de date care a fost utilizat pentru a se potrivi modelului. Setul de date pe care este antrenat modelul. Aceste date sunt văzute și învățate de model. Set de testare: Setul de date de testare este un subset al setului de date de antrenament care este utilizat pentru a oferi o evaluare precisă a potrivirii modelului final. set de validare: un set de date de validare este un eșantion de date din setul de antrenament al modelului dvs. care este utilizat pentru a estima performanța modelului în timp ce reglați hiperparametrii modelului. subadaptare: un model de date care este subadaptat are o rată de eroare mare atât pe setul de antrenament, cât și pe datele neobservate, deoarece nu este capabil să reprezinte în mod eficient relația dintre variabilele de intrare și de ieșire. supraadaptare: atunci când un model statistic se potrivește exact cu datele sale de antrenament, dar obiectivul algoritmului este pierdut, deoarece nu poate să se execute cu precizie față de date nevăzute, se numește supraadaptare
Sintaxă: sklearn.model_selection.train_test_split(*arrays, test_size=Niciuna, train_size=Niciuna, random_state=Niciuna, shuffle=True, stratify=Niciuna
Parametri:
*matrice: succesiune de indexabile. Listele, tablourile numpy, matricele scipy-sparse și cadrele de date panda sunt toate intrări valide. test_size: int sau float, implicit Nici unul. Dacă float, ar trebui să fie între 0,0 și 1,0 și să reprezinte procentul din setul de date de testat împărțit. Dacă se utilizează int, se referă la numărul total de probe de testare. Dacă valoarea este None, se folosește complementul mărimii trenului. Acesta va fi setat la 0,25 dacă dimensiunea trenului este și Niciunul. train_size: int sau float, implicit Nici unul. random_state : int, implicit Nici unul. Controlează modul în care datele sunt amestecate înainte ca împărțirea să fie implementată. Pentru ieșire repetabilă în mai multe apeluri de funcție, transmiteți un int. shuffle: obiect boolean, implicit True. Dacă datele trebuie sau nu amestecate înainte de împărțire. Stratificarea trebuie să fie Nici unul dacă shuffle=False. stratify: array-like object , implicit este None . Dacă este selectat Niciunul, datele sunt stratificate folosind acestea ca etichete de clasă.
Se intoarce:
despicare: Împărțirea intrărilor de tren-test este reprezentată ca o listă.
Pași pentru a împărți setul de date:
Pasul 1: importați pachetele sau modulele necesare:
În acest pas, importăm pachetele sau modulele necesare în mediul Python de lucru.
Python3
# import packages> import> numpy as np> import> pandas as pd> from> sklearn.model_selection> import> train_test_split> |
mylivericket
>
>
Pasul 2: importați cadrul de date/setul de date:
Aici, încărcăm CSV folosind metoda pd.read_csv() de la panda și obținem forma setului de date folosind funcția shape().
CSV folosit:

Python3
# importing data> df> => pd.read_csv(> 'prediction.csv'> )> print> (df.shape)> |
>
>
Ieșire:
(13, 3)>
Pasul 3: Obțineți variabilele caracteristice X și Y:
Aici, alocam variabilele X și Y în care variabila caracteristică X are variabile independente și variabila caracteristică y are o variabilă dependentă.
Python3
X> => df[> 'area'> ]> y> => df[> 'prices'> ]> |
>
>
Pasul 4: Folosiți clasa împărțită de test de tren pentru a împărți datele în seturi de tren și de testare:
Aici, clasa train_test_split() din sklearn.model_selection este folosită pentru a împărți datele noastre în seturi de tren și de testare în care variabilele caracteristice sunt date ca intrare în metodă. test_size determină porțiunea de date care va intra în seturile de testare și o stare aleatorie este utilizată pentru reproductibilitatea datelor.
jpa vs hibernare
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> )> |
algoritmul knn
>
>
Exemplu:
În acest exemplu, fișierul „predictions.csv” este importat. Atributul df.shape este folosit pentru a prelua forma cadrului de date. Forma cadrului de date este (13,3). Coloanele de caracteristici sunt luate în variabila X, iar coloana de rezultat este luată în variabila y. Variabilele X și y sunt transmise în metoda train_test_split() pentru a împărți cadrul de date în seturi de tren și de testare. Parametrul de stare aleatorie este utilizat pentru reproductibilitatea datelor. test_size este dat ca 0,25, ceea ce înseamnă că 25% din date intră în seturile de testare. 4 din 13 rânduri din cadrul de date intră în seturile de testare. 75% din date intră în garnituri, adică 9 rânduri din 13 rânduri. Seturile de trenuri sunt folosite pentru a se potrivi și a antrena modelul de învățare automată. Seturile de testare sunt folosite pentru evaluare.
CSV folosit:

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)> |
>
>
Ieșire:
(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,)>
Exemplu:
În acest exemplu sunt executați următorii pași:
- Pachetele necesare sunt importate.
- Setul de date Advertising.csv este încărcat și curățat, iar valorile nule sunt eliminate.
- sunt create matricele de caracteristici și țintă (X andy).
- Matricele create sunt împărțite în seturi de tren și de testare. 30% din setul de date intră în setul de testare, ceea ce înseamnă că 70% date sunt un set de trenuri.
- Este creat un obiect scaler standard.
- X_train se potrivește în scaler.
- X_train și X_test sunt transformate folosind metoda transform().
- Se creează un model de regresie liniară simplă
- Seturile de tren se potrivesc în model.
- metoda predict() este folosită pentru a efectua predicții pe setul X_test.
- Mean_squared_error() este utilizată pentru a evalua modelul.
Pentru a vizualiza și descărca fișierul CSV folosit în acest exemplu, faceți clic pe Aici .
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))> |
>
>
algebra multimilor
Ieșire:
matrice([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
Exemplu:
În acest exemplu, vom folosi modelul de clasificare K-nearest neighbors.
redenumiți folderul linux
În acest exemplu sunt executați următorii pași:
- Pachetele necesare sunt importate.
- Datele irisului sunt încărcate din sklearn.datasets.
- sunt create matricele de caracteristici și țintă (X andy).
- Matricele create sunt împărțite în seturi de tren și de testare. 30% din setul de date intră în setul de testare, ceea ce înseamnă că 70% date sunt un set de trenuri.
- Un model Knn de bază este creat folosind clasa KNeighborsClassifier.
- Seturile de tren se potrivesc modelului knn.
- metoda predict() este folosită pentru a efectua predicții pe setul 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))> |
>
>
Ieșire:
[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 2 0 0]