En aquest article, parlarem de com dividir un conjunt de dades mitjançant train_test_split() de scikit-learns.
Funció sklearn.model_selection.train_test_split():
El mètode train_test_split() s'utilitza per dividir les nostres dades en conjunts de trens i de prova. En primer lloc, hem de dividir les nostres dades en característiques (X) i etiquetes (y). El marc de dades es divideix en X_train, X_test, y_train i y_test. Els conjunts X_train i y_train s'utilitzen per entrenar i ajustar el model. Els conjunts X_test i y_test s'utilitzen per provar el model si prediu les sortides/etiquetes correctes. podem provar explícitament la mida del tren i els conjunts de prova. Es recomana mantenir els nostres conjunts de trens més grans que els de prova.
- Conjunt de trens: el conjunt de dades d'entrenament és un conjunt de dades que s'han utilitzat per adaptar-se al model. El conjunt de dades sobre el qual s'entrena el model. Aquestes dades són vistes i apreses pel model. Conjunt de proves: el conjunt de dades de prova és un subconjunt del conjunt de dades d'entrenament que s'utilitza per donar una avaluació precisa de l'ajust final del model. conjunt de validació: un conjunt de dades de validació és una mostra de dades del conjunt d'entrenament del vostre model que s'utilitza per estimar el rendiment del model mentre s'ajusten els hiperparàmetres del model. subajustament: un model de dades que no està ajustat té una taxa d'error alta tant en el conjunt d'entrenament com en les dades no observades perquè no és capaç de representar de manera efectiva la relació entre les variables d'entrada i de sortida. sobreajustament: quan un model estadístic coincideix exactament amb les seves dades d'entrenament, però l'objectiu de l'algoritme es perd perquè no es pot executar amb precisió contra dades no vistes, s'anomena sobreajustament.
Sintaxi: sklearn.model_selection.train_test_split(*arrays, test_size=Cap, train_size=Cap, random_state=Cap, shuffle=True, estratificar=Cap
Paràmetres:
*arrays: seqüència d'indexables. Les llistes, les matrius numpy, les matrius scipy-sparse i els marcs de dades pandas són entrades vàlides. prova_mida: int o float, per defecte Cap. Si és flotant, hauria d'estar entre 0,0 i 1,0 i representar el percentatge del conjunt de dades per provar la divisió. Si s'utilitza int, es refereix al nombre total de mostres de prova. Si el valor és Cap, s'utilitza el complement de la mida del tren. S'establirà en 0,25 si la mida del tren també és Cap. mida_tren: int o float, per defecte Cap. random_state : int, per defecte Cap. Controla com es barregen les dades abans d'implementar la divisió. Per a una sortida repetible a través de diverses trucades de funció, passeu un int. shuffle: boolean object , per defecte True. Si les dades s'han de barrejar o no abans de dividir-les. Estratificar ha de ser Cap si shuffle=False. stratify: array-like object , per defecte és None . Si no se selecciona Cap, les dades s'estratifiquen utilitzant aquestes etiquetes de classe.
Devolucions:
xd significatdivisió: La divisió d'entrades de prova de tren es representa com una llista.
Passos per dividir el conjunt de dades:
Pas 1: importeu els paquets o mòduls necessaris:
En aquest pas, estem important els paquets o mòduls necessaris a l'entorn Python de treball.
Python 3
# import packages> import> numpy as np> import> pandas as pd> from> sklearn.model_selection>import> train_test_split> |
>
>
Pas 2: importeu el marc de dades/conjunt de dades:
Aquí, carreguem el CSV mitjançant el mètode pd.read_csv() de pandas i obtenim la forma del conjunt de dades mitjançant la funció shape().
CSV utilitzat:
Python 3
# importing data> df>=> pd.read_csv(>'prediction.csv'>)> print>(df.shape)> |
>
>
Sortida:
(13, 3)>
Pas 3: obteniu les variables de característiques X i Y:
Aquí, estem assignant les variables X i Y en què la variable característica X té variables independents i la variable característica y té una variable dependent.
Python 3
X>=> df[>'area'>]> y>=>df[>'prices'>]> |
>
>
convertir string en int
Pas 4: utilitzeu la classe dividida de prova de tren per dividir les dades en conjunts de tren i de prova:
Aquí, la classe train_test_split() de sklearn.model_selection s'utilitza per dividir les nostres dades en conjunts de trens i de prova on les variables de característiques es donen com a entrada al mètode. test_size determina la part de les dades que aniran als conjunts de prova i s'utilitza un estat aleatori per a la reproductibilitat de les dades.
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>)> |
>
>
Exemple:
En aquest exemple, s'importa el fitxer 'prediccions.csv'. L'atribut df.shape s'utilitza per recuperar la forma del marc de dades. La forma del marc de dades és (13,3). Les columnes de característiques es prenen a la variable X i la columna de resultats a la variable y. Les variables X i y es passen al mètode train_test_split() per dividir el marc de dades en conjunts de tren i de prova. El paràmetre d'estat aleatori s'utilitza per a la reproductibilitat de les dades. test_size es dóna com a 0,25, la qual cosa significa que el 25% de les dades entren als conjunts de proves. 4 de les 13 files del marc de dades entren als conjunts de prova. El 75% de les dades entren als grups de trens, que són 9 files de 13 files. Els conjunts de trens s'utilitzen per adaptar i entrenar el model d'aprenentatge automàtic. Els conjunts de proves s'utilitzen per a l'avaluació.
CSV utilitzat:
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)> |
>
>
Sortida:
(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,)>
Exemple:
En aquest exemple s'executen els passos següents:
- S'importen els paquets necessaris.
- El conjunt de dades Advertising.csv es carrega i es neteja, i s'eliminen els valors nuls.
- Es creen matrius de característiques i objectiu (X andy).
- Les matrius creades es divideixen en conjunts de trens i de prova. El 30% del conjunt de dades passa al conjunt de proves, el que significa que el 70% de les dades són un conjunt de trens.
- Es crea un objecte escalador estàndard.
- X_train s'adapta a l'escala.
- X_train i X_test es transformen mitjançant el mètode transform().
- Es crea un model de regressió lineal simple
- Els trens encaixen en el model.
- el mètode predict() s'utilitza per dur a terme prediccions sobre el conjunt X_test.
- La mètrica mean_squared_error() s'utilitza per avaluar el model.
Per veure i descarregar el fitxer CSV utilitzat en aquest exemple, feu clic a aquí .
Python 3
munt d'ordenació
# 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))> |
>
>
Sortida:
matriu([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
Exemple:
En aquest exemple, utilitzarem el model de classificador K-veïns més propers.
En aquest exemple s'executen els passos següents:
- S'importen els paquets necessaris.
- Les dades de l'iris es carreguen des de sklearn.datasets.
- Es creen matrius de característiques i objectiu (X andy).
- Les matrius creades es divideixen en conjunts de trens i de prova. El 30% del conjunt de dades passa al conjunt de proves, el que significa que el 70% de les dades són un conjunt de trens.
- Es crea un model Knn bàsic mitjançant la classe KNeighborsClassifier.
- Els jocs de tren s'ajusten al model knn.
- el mètode predict() s'utilitza per dur a terme prediccions sobre el conjunt X_test.
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))> |
>
comanda estirament d'autocad
>
Sortida:
[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]