Dans cet article, apprenons comment effectuer un fractionnement de test d'entraînement à l'aide de Sklearn en Python.
Entraîner la répartition des tests à l'aide de Sklearn
La méthode train_test_split() est utilisée pour diviser nos données en ensembles d'entraînement et de test.
Tout d’abord, nous devons diviser nos données en fonctionnalités (X) et étiquettes (y). La trame de données est divisée en X_train, X_test , y_train et y_test. Les ensembles X_train et y_train sont utilisés pour la formation et l'ajustement du modèle. Les ensembles X_test et y_test sont utilisés pour tester le modèle s'il prédit les bonnes sorties/étiquettes. nous pouvons tester explicitement la taille du train et tester les ensembles. Il est suggéré de conserver nos rames plus grandes que les rames de test.
Coffret : L'ensemble de données de formation est un ensemble de données qui ont été utilisées pour ajuster le modèle. L'ensemble de données sur lequel le modèle est formé. Ces données sont vues et apprises par le modèle.
Ensemble d'essai: L'ensemble de données de test est un sous-ensemble de l'ensemble de données de formation qui est utilisé pour donner une évaluation précise de l'ajustement final du modèle.
ensemble de validation : Un ensemble de données de validation est un échantillon de données de l'ensemble d'entraînement de votre modèle qui est utilisé pour estimer les performances du modèle tout en ajustant les hyperparamètres du modèle.
instruction java
par défaut, 25 % de nos données sont des ensembles de tests et 75 % des données sont destinées aux tests de formation.
Syntaxe: sklearn.model_selection.train_test_split()
paramètres:
*tableaux : séquence d'indexables. Les listes, les tableaux numpy, les matrices scipy-sparse et les dataframes pandas sont tous des entrées valides. test_size : int ou float, par défaut Aucun. S'il est flottant, il doit être compris entre 0,0 et 1,0 et représenter le pourcentage de l'ensemble de données à tester. Si int est utilisé, il fait référence au nombre total d’échantillons testés. Si la valeur est Aucun, le complément de la taille du train est utilisé. Il sera défini sur 0,25 si la taille du train est également Aucune. train_size : int ou float, par défaut Aucun. random_state : int, par défaut Aucun. Contrôle la manière dont les données sont mélangées avant la mise en œuvre de la division. Pour une sortie reproductible sur plusieurs appels de fonction, transmettez un int.
shuffle : objet booléen, par défaut True. Indique si les données doivent être mélangées ou non avant de les diviser. Stratify doit avoir la valeur None si shuffle=False. stratifier : objet de type tableau, par défaut c'est Aucun. Si Aucun est sélectionné, les données sont stratifiées en les utilisant comme étiquettes de classe.Retour: fractionnement : liste
Exemple 1:
Les packages numpy, pandas et scikit-learn sont importés. Le fichier CSV est importé. X contient les fonctionnalités et y représente les étiquettes. nous divisons la trame de données en X et y et effectuons une répartition des tests de train sur eux. random_state agit comme une graine numpy, elle est utilisée pour la reproductibilité des données. test_size est donné comme 0,25 , cela signifie que 25 % de nos données vont dans notre taille de test. 1-test_size est la taille de notre train, nous n'avons pas besoin de le préciser. shuffle = True, mélange nos données avant de les diffuser. Les ensembles X_train et X_test sont utilisés pour ajuster et entraîner notre modèle et les ensembles de test sont utilisés pour tester et valider.
Pour accéder au fichier CSV cliquez sur ici.
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(>'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())> |
>
concaténation SQL
>
Sortir:
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 :
Dans cet exemple, les mêmes étapes sont suivies, au lieu de spécifier le test_size, nous spécifions le train_size. test_size est 1-train_size. 80 % des données sont des ensembles de trains, donc 20 % de nos données sont notre ensemble de test. Si nous ne spécifions pas les tailles des rames de test et de train, test_size par défaut sera de 0,25. X_train et y_train ont la même forme et les mêmes index, car y_train est l'étiquette des fonctionnalités X_train. il en va de même avec X_test et y_test.
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(>'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)> |
>
>
Sortir:
(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,)>