In dit artikel bespreken we hoe je een dataset kunt splitsen met behulp van train_test_split() van scikit-learns.
sklearn.model_selection.train_test_split() functie:
De train_test_split() methode wordt gebruikt om onze gegevens op te splitsen in trein- en testsets. Eerst moeten we onze gegevens verdelen in kenmerken (X) en labels (y). Het dataframe wordt verdeeld in X_train, X_test, y_train en y_test. X_train- en y_train-sets worden gebruikt voor het trainen en aanpassen van het model. De sets X_test en y_test worden gebruikt om het model te testen of het de juiste uitvoer/labels voorspelt. we kunnen de grootte van de trein en testsets expliciet testen. Er wordt voorgesteld om onze treinsets groter te houden dan de testsets.
- Treinset: De trainingsgegevensset is een set gegevens die is gebruikt om in het model te passen. De gegevensset waarop het model is getraind. Deze gegevens worden door het model gezien en geleerd. Testset: De testgegevensset is een subset van de trainingsgegevensset die wordt gebruikt om een nauwkeurige evaluatie te geven van de uiteindelijke pasvorm van het model. validatieset: een validatiegegevensset is een voorbeeld van gegevens uit de trainingsset van uw model die wordt gebruikt om de modelprestaties te schatten tijdens het afstemmen van de hyperparameters van het model. underfitting: Een datamodel dat onvoldoende is aangepast, heeft een hoog foutenpercentage op zowel de trainingsset als de niet-geobserveerde gegevens, omdat het niet in staat is de relatie tussen de invoer- en uitvoervariabelen effectief weer te geven. overfitting: wanneer een statistisch model zijn trainingsgegevens exact matcht, maar het doel van het algoritme verloren gaat omdat het niet in staat is nauwkeurig uit te voeren op onzichtbare gegevens, wordt dit overfitting genoemd
Syntaxis: sklearn.model_selection.train_test_split(*arrays, test_size=Geen, train_size=Geen, random_state=Geen, shuffle=True, stratify=Geen
mijnflixerParameters:
*arrays: reeks indexeerbare bestanden. Lijsten, numpy-arrays, scipy-sparse matrices en panda's-dataframes zijn allemaal geldige invoer. test_size: int of float, standaard Geen. Als de waarde zwevend is, moet deze tussen 0,0 en 1,0 liggen en het percentage van de gegevensset vertegenwoordigen dat moet worden getest. Als int wordt gebruikt, verwijst dit naar het totale aantal testmonsters. Als de waarde Geen is, wordt het complement van de treingrootte gebruikt. Deze wordt ingesteld op 0,25 als de treingrootte ook Geen is. train_size: int of float, standaard Geen. random_state: int, standaard Geen. Bepaalt hoe de gegevens worden geschud voordat de splitsing wordt geïmplementeerd. Voor herhaalbare uitvoer over meerdere functieaanroepen geeft u een int door. shuffle: booleaans object, standaard True. Of de gegevens al dan niet moeten worden geschud voordat ze worden gesplitst. Stratify moet Geen zijn als shuffle=False. stratify: array-achtig object, standaard is dit Geen . Als Geen is geselecteerd, worden de gegevens gestratificeerd met behulp van deze als klasselabels.
Geeft terug:
splitsen: De treintestsplitsing van invoer wordt weergegeven als een lijst.
Stappen om de dataset te splitsen:
Stap 1: Importeer de benodigde pakketten of modules:
In deze stap importeren we de benodigde pakketten of modules in de werkende Python-omgeving.
Python3
# import packages> import> numpy as np> import> pandas as pd> from> sklearn.model_selection>import> train_test_split> |
>
>
Stap 2: Importeer het dataframe/dataset:
Hier laden we de CSV met behulp van de methode pd.read_csv() van panda's en verkrijgen we de vorm van de gegevensset met behulp van de functie shape().
CSV gebruikt:
Python3
# importing data> df>=> pd.read_csv(>'prediction.csv'>)> print>(df.shape)> |
>
>
Uitgang:
(13, 3)>
Stap 3: X- en Y-functievariabelen ophalen:
Hier wijzen we de X- en de Y-variabele toe, waarbij de X-kenmerkvariabele onafhankelijke variabelen heeft en de y-kenmerkvariabele een afhankelijke variabele heeft.
Python3
X>=> df[>'area'>]> y>=>df[>'prices'>]> |
>
>
Stap 4: Gebruik de treintestsplitsklasse om gegevens op te splitsen in trein- en testsets:
Hier wordt de klasse train_test_split() van sklearn.model_selection gebruikt om onze gegevens op te splitsen in trein- en testsets, waarbij kenmerkvariabelen als invoer in de methode worden opgegeven. test_size bepaalt het deel van de gegevens dat in testsets terechtkomt en een willekeurige status wordt gebruikt voor de reproduceerbaarheid van de gegevens.
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>)> |
>
>
factoriële java
Voorbeeld:
In dit voorbeeld wordt het bestand ‘predictions.csv’ geïmporteerd. Het kenmerk df.shape wordt gebruikt om de vorm van het dataframe op te halen. De vorm van het dataframe is (13,3). De kenmerkenkolommen worden in de X-variabele opgenomen en de uitkomstkolom in de y-variabele. X- en y-variabelen worden doorgegeven in de train_test_split()-methode om het dataframe op te splitsen in trein- en testsets. De willekeurige toestandsparameter wordt gebruikt voor de reproduceerbaarheid van gegevens. test_size wordt gegeven als 0,25, wat betekent dat 25% van de gegevens in de testsets terechtkomt. Vier van de dertien rijen in het dataframe gaan naar de testsets. 75% van de gegevens gaat naar de treinsets, dat zijn 9 rijen van de 13 rijen. De treinsets worden gebruikt om het machine learning-model aan te passen en te trainen. De testsets worden gebruikt voor evaluatie.
CSV gebruikt:
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)> |
>
>
Uitgang:
(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,)>
Voorbeeld:
In dit voorbeeld worden de volgende stappen uitgevoerd:
- De benodigde pakketten worden geïmporteerd.
- De Advertising.csv-gegevensset wordt geladen en opgeschoond, en nulwaarden worden verwijderd.
- feature- en target-matrices worden gemaakt (X andy).
- De gemaakte arrays worden opgesplitst in trein- en testsets. 30% van de dataset gaat naar de testset, wat betekent dat 70% van de data een treinset is.
- Er wordt een standaard scalerobject gemaakt.
- X_train past in de scaler.
- X_train en X_test worden getransformeerd met behulp van de transform()-methode.
- Er wordt een eenvoudig lineair regressiemodel gemaakt
- Treinsets passen in het model.
- de voorspellen() methode wordt gebruikt om voorspellingen uit te voeren op de X_test set.
- mean_squared_error()-metriek wordt gebruikt om het model te evalueren.
Om het CSV-bestand dat in dit voorbeeld wordt gebruikt te bekijken en te downloaden, klikt u op hier .
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))> |
>
>
Uitgang:
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
Voorbeeld:
In dit voorbeeld gaan we het classificatiemodel K-dichtstbijzijnde buren gebruiken.
In dit voorbeeld worden de volgende stappen uitgevoerd:
- De benodigde pakketten worden geïmporteerd.
- irisgegevens worden geladen vanuit sklearn.datasets.
- feature- en target-matrices worden gemaakt (X andy).
- De gemaakte arrays worden opgesplitst in trein- en testsets. 30% van de dataset gaat naar de testset, wat betekent dat 70% van de data een treinset is.
- Er wordt een basis-Knn-model gemaakt met behulp van de klasse KNeighborsClassifier.
- Treinsets passen in het knn-model.
- de voorspellen() methode wordt gebruikt om voorspellingen uit te voeren op de X_test set.
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))> |
>
Java-gebruikersinvoer
>
Uitgang:
[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]