logo

Jak rozdělit datovou sadu pomocí funkce train_test_split() scikit-learn

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]