V tomto článku probereme, jak rozdělit datovou sadu pomocí scikit-learns' train_test_split().
funkce sklearn.model_selection.train_test_split():
Metoda train_test_split() se používá k rozdělení našich dat na vlakové a testovací sady. Nejprve musíme rozdělit naše data na funkce (X) a štítky (y). Datový rámec se rozdělí na X_train, X_test, y_train a y_test. Sady X_train a y_train slouží k trénování a montáži modelu. Sady X_test a y_test se používají k testování modelu, pokud předpovídá správné výstupy/návěsky. můžeme explicitně otestovat velikost vlaku a testovací soupravy. Doporučujeme ponechat naše vlakové soupravy větší než testovací soupravy.
- Tréninková sada: Tréninková datová sada je sada dat, která byla použita k přizpůsobení modelu. Datová sada, na které je model trénován. Tato data vidí a učí se model. Testovací sada: Testovací datová sada je podmnožinou tréninkové datové sady, která se používá k přesnému vyhodnocení konečného přizpůsobení modelu. ověřovací sada: Ověřovací datová sada je vzorek dat z tréninkové sady vašeho modelu, která se používá k odhadu výkonu modelu při ladění hyperparametrů modelu. underfitting: Datový model, který je nevyhovující, má vysokou chybovost jak na trénovací množině, tak na nepozorovaných datech, protože není schopen efektivně reprezentovat vztah mezi vstupními a výstupními proměnnými. overfitting: když se statistický model přesně shoduje s trénovacími daty, ale cíl algoritmu je ztracen, protože není schopen přesně pracovat s neviditelnými daty, nazývá se overfitting
Syntax: sklearn.model_selection.train_test_split(*arrays, test_size=Žádné, train_size=Žádné, random_state=Žádné, shuffle=True, stratify=Žádné
Parametry:
*pole: sekvence indexovatelných. Seznamy, numpy pole, scipy-sparse matice a datové rámce pandas jsou všechny platné vstupy. test_size: int nebo float, ve výchozím nastavení Žádný. Pokud plovoucí, měla by být mezi 0,0 a 1,0 a představovat procento souboru dat pro testovací rozdělení. Je-li použito int, vztahuje se k celkovému počtu zkušebních vzorků. Pokud je hodnota Žádná, použije se doplněk velikosti vlaku. Pokud je velikost vlaku také Žádná, bude nastavena na 0,25. train_size: int nebo float, ve výchozím nastavení Žádné. random_state : int, ve výchozím nastavení Žádný. Řídí, jak jsou data před implementací rozdělení zamíchána. Pro opakovatelný výstup přes několik volání funkcí předejte int. shuffle: boolean object , ve výchozím nastavení True. Zda mají být data před rozdělením zamíchána nebo ne. Stratify musí být None, pokud shuffle=False. stratify: array-like object , ve výchozím nastavení je to None . Pokud je vybrána možnost Žádná, data jsou stratifikována pomocí těchto štítků jako tříd.
Vrácení:
dělení: Rozdělení vstupů pro testování vlaku je reprezentováno jako seznam.
Kroky k rozdělení datové sady:
Krok 1: Importujte potřebné balíčky nebo moduly:
V tomto kroku importujeme potřebné balíčky nebo moduly do pracovního prostředí pythonu.
Python3
# import packages> import> numpy as np> import> pandas as pd> from> sklearn.model_selection>import> train_test_split> |
>
>
Krok 2: Importujte datový rámec/datovou sadu:
Zde načteme CSV pomocí metody pd.read_csv() z pandy a pomocí funkce shape() získáme tvar datové sady.
Použitý soubor CSV:
Python3
# importing data> df>=> pd.read_csv(>'prediction.csv'>)> print>(df.shape)> |
>
java třídící seznam polí
>
Výstup:
(13, 3)>
Krok 3: Získejte proměnné funkce X a Y:
Zde přiřazujeme proměnné X a Y, ve kterých má proměnná funkce X nezávislé proměnné a proměnná funkce y má závisle proměnnou.
Python3
X>=> df[>'area'>]> y>=>df[>'prices'>]> |
>
>
Krok 4: Použijte třídu rozdělení testu vlaku k rozdělení dat do vlakových a testovacích sad:
Zde se třída train_test_split() ze sklearn.model_selection používá k rozdělení našich dat do vlakových a testovacích sad, kde jsou proměnné funkce zadány jako vstup v metodě. test_size určuje část dat, která půjde do testovacích sad, a náhodný stav se používá pro reprodukovatelnost dat.
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>)> |
>
>
jak aktualizovat v Javě
Příklad:
V tomto příkladu je importován soubor ‚predictions.csv‘. Atribut df.shape se používá k načtení tvaru datového rámce. Tvar datového rámce je (13,3). Sloupce funkcí jsou převzaty v proměnné X a sloupec výsledků v proměnné y. Proměnné X a y jsou předávány v metodě train_test_split() k rozdělení datového rámce na vlakové a testovací sady. Parametr náhodného stavu se používá pro reprodukovatelnost dat. test_size je uvedena jako 0,25, což znamená, že 25 % dat jde do testovacích sad. 4 ze 13 řádků v datovém rámci jdou do testovacích sad. 75 % dat jde do vlakových souprav, což je 9 řádků ze 13 řádků. Vlakové soupravy se používají k přizpůsobení a trénování modelu strojového učení. K vyhodnocení se používají testovací sady.
Použitý soubor CSV:
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)> |
>
>
Výstup:
(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,)>
Příklad:
V tomto příkladu jsou provedeny následující kroky:
- Potřebné balíčky jsou importovány.
- Datová sada Advertising.csv se načte a vyčistí a hodnoty null budou zrušeny.
- jsou vytvořena pole prvků a cílů (X andy).
- Vytvořená pole jsou rozdělena na vlakové a testovací sady. 30 % datové sady jde do testovací sady, což znamená, že 70 % dat tvoří vlaková souprava.
- Vytvoří se standardní objekt scaleru.
- X_train se hodí do scaleru.
- X_train a X_test jsou transformovány pomocí metody transform().
- Je vytvořen jednoduchý lineární regresní model
- Do modelu zapadají vlakové soupravy.
- metoda predikce() se používá k provádění predikcí na množině X_test.
- Metrika mean_squared_error() se používá k vyhodnocení modelu.
Chcete-li zobrazit a stáhnout soubor CSV použitý v tomto příkladu, klikněte na tady .
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))> |
>
>
Výstup:
pole([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
Příklad:
V tomto příkladu použijeme model klasifikátoru K-nejbližších sousedů.
V tomto příkladu jsou provedeny následující kroky:
- Potřebné balíčky jsou importovány.
- data duhovky se načtou ze sklearn.datasets.
- jsou vytvořeny funkce a cílové pole (X andy).
- Vytvořená pole jsou rozdělena na vlakové a testovací sady. 30 % datové sady jde do testovací sady, což znamená, že 70 % dat tvoří vlaková souprava.
- Základní model Knn je vytvořen pomocí třídy KNeighborsClassifier.
- Vlakové soupravy pasují do modelu knn.
- metoda predikce() se používá k provádění predikcí na množině X_test.
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))> |
>
rozhraní vs abstraktní třída
>
Výstup:
[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]