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

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)>

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> )>

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))>

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]



Nejlepší Články

Kategorie

Zajímavé Články