En aquest article, aprenem a fer una divisió de prova de tren amb Sklearn a Python.
Prova de tren dividida amb Sklearn
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 es va utilitzar 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 prova: 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.
de manera predeterminada, el 25% de les nostres dades són un conjunt de proves i el 75% de les dades entren en proves d'entrenament.
Sintaxi: sklearn.model_selection.train_test_split()
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 Cap. Si no se selecciona Cap, les dades s'estratifiquen utilitzant aquestes etiquetes de classe.torna: divisió: llista
Exemple 1:
S'importen els paquets numpy, pandas i scikit-learn. S'ha importat el fitxer CSV. X conté les característiques i y són les etiquetes. dividim el marc de dades en X i y i fem una part de prova de tren sobre ells. random_state actua com una llavor numpy, s'utilitza per a la reproductibilitat de les dades. test_size es dóna com a 0,25 , vol dir que el 25% de les nostres dades entren a la mida de la nostra prova. 1-test_size és la mida del nostre tren, no cal que ho especifiquem. shuffle =Cert, barreja les nostres dades abans de vessar. Els conjunts X_train i X_test s'utilitzen per adaptar i entrenar el nostre model i els conjunts de prova s'utilitzen per provar i validar.
Per accedir al fitxer CSV feu clic aquí.
La classe abstracta pot tenir un constructor
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(>'headbrain1.csv'>)> > # head of the data> print>(df.head())> > X>=> df[>'Head Size(cm^3)'>]> y>=>df[>'Brain Weight(grams)'>]> > # 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>('')> print>(>'X_test : '>)> print>(X_test.head())> print>('')> print>(>'y_train : '>)> print>(y_train.head())> print>('')> print>(>'y_test : '>)> print>(y_test.head())> |
>
>
Sortida:
Head Size(cm^3) Brain Weight(grams) 0 4512 1530 1 3738 1297 2 4261 1335 3 3777 1282 4 4177 1590 X_train : 99 3478 52 4270 184 3479 139 3171 107 3399 Name: Head Size(cm^3), dtype: int64 (177,) X_test : 66 3415 113 3594 135 3436 227 4204 68 4430 Name: Head Size(cm^3), dtype: int64 (60,) y_train : 99 1270 52 1335 184 1160 139 1127 107 1226 Name: Brain Weight(grams), dtype: int64 (177,) y_test : 66 1310 113 1290 135 1235 227 1380 68 1510 Name: Brain Weight(grams), dtype: int64 (60,)>
Exemple 2:
En aquest exemple, se segueixen els mateixos passos, en lloc d'especificar la mida_test, especifiquem la mida_tren. test_size és 1-train_size. El 80% de les dades són un conjunt de trens, de manera que el 20% de les nostres dades són el nostre conjunt de proves. Si no especifiquem les mides dels conjunts de proves i trens per defecte test_size serà 0,25. X_train i y_train tenen la mateixa forma i índexs, ja que y_train és l'etiqueta de les característiques X_train. el mateix passa amb X_test i y_test.
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(>'headbrain1.csv'>)> print>(df.shape)> > # head of the data> print>(df.head())> > X>=> df[>'Head Size(cm^3)'>]> y>=>df[>'Brain Weight(grams)'>]> > # using the train test split function> X_train, X_test, y_train,> y_test>=> train_test_split(X,y ,> >random_state>=>104>,> >train_size>=>0.8>, 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:
(237, 2) Head Size(cm^3) Brain Weight(grams) 0 4512 1530 1 3738 1297 2 4261 1335 3 3777 1282 4 4177 1590 X_train : 110 3695 164 3497 58 3935 199 3297 182 4005 Name: Head Size(cm^3), dtype: int64 (189,) X_test : 66 3415 113 3594 135 3436 227 4204 68 4430 Name: Head Size(cm^3), dtype: int64 (48,) y_train : 110 1310 164 1280 58 1330 199 1220 182 1280 Name: Brain Weight(grams), dtype: int64 (189,) y_test : 66 1310 113 1290 135 1235 227 1380 68 1510 Name: Brain Weight(grams), dtype: int64 (48,)>