I den här artikeln kommer vi att diskutera hur man delar upp en datauppsättning med scikit-learns train_test_split().
sklearn.model_selection.train_test_split() funktion:
Metoden train_test_split() används för att dela upp vår data i tåg- och testset. Först måste vi dela upp vår data i funktioner (X) och etiketter (y). Dataramen delas in i X_train, X_test, y_train och y_test. X_train och y_train set används för träning och anpassning av modellen. Uppsättningarna X_test och y_test används för att testa modellen om den förutsäger rätt utdata/etiketter. vi kan uttryckligen testa tågets storlek och testset. Det rekommenderas att hålla våra tågset större än testseten.
- Tåguppsättning: Träningsuppsättningen är en uppsättning data som användes för att passa modellen. Datauppsättningen som modellen tränas på. Denna data ses och lärs av modellen. Testuppsättning: Testdatauppsättningen är en delmängd av träningsdatauppsättningen som används för att ge en korrekt utvärdering av en slutlig modellanpassning. valideringsuppsättning: En valideringsdatauppsättning är ett urval av data från din modells träningsuppsättning som används för att uppskatta modellens prestanda samtidigt som modellens hyperparametrar justeras. underpassning: En datamodell som är undertillpassad har en hög felfrekvens på både träningsuppsättningen och oobserverade data eftersom den inte på ett effektivt sätt kan representera förhållandet mellan ingångs- och utdatavariablerna. överanpassning: när en statistisk modell matchar sina träningsdata exakt men algoritmens mål går förlorat eftersom den inte kan utföra exakt mot osynliga data kallas överanpassning
Syntax: sklearn.model_selection.train_test_split(*arrays, test_size=Ingen, train_size=Ingen, random_state=Ingen, shuffle=True, stratify=Ingen
Parametrar:
*matriser: sekvens av indexerbara. Listor, numpy arrays, scipy-glesa matriser och pandas dataramar är alla giltiga indata. test_size: int eller float, som standard Ingen. Om den flyter bör den vara mellan 0,0 och 1,0 och representera procentandelen av datamängden som ska testas. Om int används avser det det totala antalet testprover. Om värdet är Inget används komplementet till tågets storlek. Den kommer att ställas in på 0,25 om tågstorleken också är Ingen. train_size: int eller float, som standard Ingen. random_state : int, som standard Ingen. Styr hur data blandas innan uppdelningen implementeras. För repeterbar utdata över flera funktionsanrop, skicka en int. shuffle: booleskt objekt , som standard True. Huruvida data ska blandas före uppdelning eller inte. Stratifiera måste vara Ingen om shuffle=False. stratify: array-like object , som standard är det None . Om Ingen väljs stratifieras data med dessa som klassetiketter.
Returnerar:
dela: Tågtestfördelningen av ingångar representeras som en lista.
Steg för att dela upp datasetet:
Steg 1: Importera nödvändiga paket eller moduler:
I det här steget importerar vi de nödvändiga paketen eller modulerna till arbetsmiljön för python.
Python3
# import packages> import> numpy as np> import> pandas as pd> from> sklearn.model_selection>import> train_test_split> |
>
>
Steg 2: Importera dataramen/datauppsättningen:
Här laddar vi CSV med pd.read_csv() metoden från pandas och får formen på datamängden med hjälp av shape()-funktionen.
CSV som används:
Python3
mylivecricket
# importing data> df>=> pd.read_csv(>'prediction.csv'>)> print>(df.shape)> |
>
>
Produktion:
(13, 3)>
Steg 3: Hämta X- och Y-funktionsvariabler:
Här tilldelar vi X- och Y-variabeln där X-funktionsvariabeln har oberoende variabler och y-funktionsvariabeln har en beroende variabel.
Python3
X>=> df[>'area'>]> y>=>df[>'prices'>]> |
>
>
Steg 4: Använd klassen tågtest för att dela upp data i tåg- och testuppsättningar:
Här används klassen train_test_split() från sklearn.model_selection för att dela upp vår data i tåg- och testset där funktionsvariabler ges som input i metoden. test_size bestämmer den del av data som kommer att gå in i testset och ett slumpmässigt tillstånd används för datareproducerbarhet.
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>)> |
>
>
java tostring-metod
Exempel:
I det här exemplet importeras filen 'predictions.csv'. df.shape-attributet används för att hämta formen på dataramen. Formen på dataramen är (13,3). Funktionskolumnerna tas i X-variabeln och utfallskolumnen tas i y-variabeln. X- och y-variabler skickas i metoden train_test_split() för att dela upp dataramen i tåg- och testuppsättningar. Parametern slumpmässigt tillstånd används för datareproducerbarhet. test_size anges som 0,25 vilket betyder att 25 % av data går in i testseten. 4 av 13 rader i dataramen går in i testseten. 75 % av datan går in i tågsätten, vilket är 9 rader av 13 rader. Tågseten används för att passa och träna maskininlärningsmodellen. Testseten används för utvärdering.
CSV som används:
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)> |
>
>
Produktion:
(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,)>
Exempel:
I det här exemplet utförs följande steg:
- De nödvändiga paketen importeras.
- Advertising.csv-datauppsättningen laddas och rensas, och nollvärden tas bort.
- funktions- och målmatriser skapas (X andy).
- De skapade arrayerna är uppdelade i tåg- och testset. 30 % av datamängden går in i testsetet, vilket betyder att 70 % data är en tåguppsättning.
- Ett standardskalningsobjekt skapas.
- X_train passar in i scalern.
- X_train och X_test transformeras med transform()-metoden.
- En enkel linjär regressionsmodell skapas
- Tågset passar i modellen.
- metoden predict() används för att utföra förutsägelser på X_test-uppsättningen.
- mean_squared_error()-måttet används för att utvärdera modellen.
För att visa och ladda ner CSV-filen som används i det här exemplet, klicka på här .
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))> |
>
>
Produktion:
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
Exempel:
I det här exemplet kommer vi att använda klassificeringsmodellen K-närmaste grannar.
I det här exemplet utförs följande steg:
- De nödvändiga paketen importeras.
- irisdata laddas från sklearn.datasets.
- funktions- och målmatriser skapas (X andy).
- De skapade arrayerna är uppdelade i tåg- och testset. 30 % av datamängden går in i testsetet, vilket betyder att 70 % data är en tåguppsättning.
- En grundläggande Knn-modell skapas med klassen KNeighborsClassifier.
- Tågset passar i knn-modellen.
- metoden predict() används för att utföra förutsägelser på X_test-uppsättningen.
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))> |
>
typer av tester
>
Produktion:
[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]