logo

Jak podzielić zbiór danych za pomocą funkcji train_test_split() scikit-learn

W tym artykule omówimy, jak podzielić zbiór danych za pomocą funkcji train_test_split() scikit-learns.

funkcja sklearn.model_selection.train_test_split():

Metoda train_test_split() służy do dzielenia naszych danych na zbiory pociągowe i testowe. Najpierw musimy podzielić nasze dane na cechy (X) i etykiety (y). Ramka danych zostaje podzielona na X_train, X_test, y_train i y_test. Zbiory X_train i y_train służą do uczenia i dopasowywania modelu. Zestawy X_test i y_test służą do testowania modelu, jeśli przewiduje on właściwe wyniki/etykiety. możemy jawnie przetestować rozmiar pociągu i zbiorów testowych. Sugeruje się, aby nasze zestawy pociągów były większe niż zestawy testowe.

    Zestaw pociągowy: Zbiór danych szkoleniowych to zbiór danych, który został wykorzystany w celu dopasowania modelu. Zbiór danych, na którym szkolony jest model. Dane te są widoczne i uczone przez model. Zbiór testowy: Testowy zbiór danych jest podzbiorem zbioru danych szkoleniowych, który jest wykorzystywany do dokładnej oceny ostatecznego dopasowania modelu. zestaw walidacyjny: zestaw danych walidacyjnych to próbka danych ze zbioru szkoleniowego modelu, która służy do szacowania wydajności modelu podczas dostrajania hiperparametrów modelu. niedopasowanie: niedopasowany model danych charakteryzuje się wysokim poziomem błędów zarówno w przypadku zbioru uczącego, jak i danych nieobserwowanych, ponieważ nie jest w stanie skutecznie przedstawić relacji między zmiennymi wejściowymi i wyjściowymi. nadmierne dopasowanie: gdy model statystyczny dokładnie dopasowuje swoje dane szkoleniowe, ale cel algorytmu zostaje utracony, ponieważ nie jest on w stanie dokładnie wykonać na podstawie niewidocznych danych, nazywa się nadmiernym dopasowaniem

Składnia: sklearn.model_selection.train_test_split(*arrays, test_size=None, train_size=Brak, random_state=Brak, shuffle=True, stratify=Brak



Parametry:

    *tablice: sekwencja indeksowalnych. Listy, tablice numpy, macierze scipy-sparse i ramki danych pand są prawidłowymi danymi wejściowymi. test_size: int lub float, domyślnie Brak. Jeśli jest zmiennoprzecinkowy, powinna wynosić od 0,0 do 1,0 i reprezentować procent zbioru danych do przetestowania podziału. Jeśli użyto int, odnosi się on do całkowitej liczby próbek testowych. Jeśli wartość wynosi Brak, używane jest uzupełnienie rozmiaru pociągu. Zostanie ustawiona na 0,25, jeśli rozmiar pociągu również ma wartość Brak. train_size: int lub float, domyślnie Brak. random_state: int, domyślnie Brak. Kontroluje sposób tasowania danych przed wdrożeniem podziału. Aby uzyskać powtarzalne dane wyjściowe w kilku wywołaniach funkcji, należy przekazać int. shuffle: obiekt logiczny, domyślnie True. Określa, czy dane powinny zostać przetasowane przed podziałem. Stratify musi mieć wartość None, jeśli shuffle=False. stratify: obiekt podobny do tablicy, domyślnie jest to None. Jeśli wybrano opcję Brak, dane są stratyfikowane przy użyciu tych etykiet jako etykiet klas.

Zwroty:

rozdzielać: Podział danych wejściowych na test pociągu jest reprezentowany w postaci listy.

Kroki podziału zbioru danych:

Krok 1: Zaimportuj niezbędne pakiety lub moduły:

Na tym etapie importujemy niezbędne pakiety lub moduły do ​​działającego środowiska Pythona.

Python3




# import packages> import> numpy as np> import> pandas as pd> from> sklearn.model_selection>import> train_test_split>

>

>

Krok 2: Zaimportuj ramkę danych/zestaw danych:

Tutaj ładujemy plik CSV za pomocą metody pd.read_csv() z pand i uzyskujemy kształt zestawu danych za pomocą funkcji Shape().

Używany plik CSV:

Python3


int w ciągu



# importing data> df>=> pd.read_csv(>'prediction.csv'>)> print>(df.shape)>

>

>

Wyjście:

(13, 3)>

Krok 3: Uzyskaj zmienne cech X i Y:

Tutaj przypisujemy zmienną X i Y, w której zmienna cechy X ma zmienne niezależne, a zmienna cechy y ma zmienną zależną.

Python3




X>=> df[>'area'>]> y>=>df[>'prices'>]>

>

>

Krok 4: Użyj klasy podziału testu pociągu, aby podzielić dane na zbiory pociągowe i testowe:

W tym przypadku klasa train_test_split() z sklearn.model_selection służy do dzielenia danych na zbiory pociągowe i testowe, w których zmienne cech są podawane jako dane wejściowe w metodzie. test_size określa część danych, która trafi do zestawów testowych, a do powtarzalności danych używany jest stan losowy.

długo do napisania Java

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

topologie
>

>

Przykład:

W tym przykładzie importowany jest plik „predictions.csv”. Atrybut df.shape służy do pobierania kształtu ramki danych. Kształt ramki danych to (13,3). Kolumny cech są umieszczane w zmiennej X, a kolumna wyników w zmiennej y. Zmienne X i y są przekazywane w metodzie train_test_split() w celu podzielenia ramki danych na zbiory pociągowe i testowe. Parametr stanu losowego służy do powtarzalności danych. test_size ma wartość 0,25, co oznacza, że ​​25% danych trafia do zestawów testowych. 4 z 13 wierszy w ramce danych trafiają do zestawów testowych. 75% danych trafia do zestawów pociągów, czyli 9 z 13 wierszy. Zestawy pociągów służą do dopasowywania i uczenia modelu uczenia maszynowego. Do oceny wykorzystywane są zestawy testowe.

Używany plik 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)>

>

>

Wyjście:

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

Przykład:

W tym przykładzie wykonywane są następujące kroki:

  • Niezbędne pakiety są importowane.
  • Zestaw danych Advertising.csv jest ładowany i czyszczony, a wartości null są usuwane.
  • tworzone są tablice cech i obiektów docelowych (X andy).
  • Utworzone tablice są podzielone na zestawy pociągowe i testowe. 30% zbioru danych trafia do zbioru testowego, co oznacza, że ​​70% danych to zbiór pociągowy.
  • Tworzony jest standardowy obiekt skalujący.
  • X_train pasuje do skalera.
  • X_train i X_test są przekształcane przy użyciu metody transform().
  • Tworzony jest prosty model regresji liniowej
  • Zestawy pociągów pasują do modelu.
  • metoda przewidywania() służy do przeprowadzania przewidywań na zbiorze X_test.
  • Metryka mean_squared_error() służy do oceny modelu.

Aby wyświetlić i pobrać plik CSV użyty w tym przykładzie, kliknij Tutaj .

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

>

>

ciąg do jsonobject

Wyjście:

tablica([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

Przykład:

W tym przykładzie użyjemy modelu klasyfikatora K-najbliższych sąsiadów.

W tym przykładzie wykonywane są następujące kroki:

  • Niezbędne pakiety są importowane.
  • Dane iris są ładowane ze sklearn.datasets.
  • tworzone są tablice cech i obiektów docelowych (X andy).
  • Utworzone tablice są podzielone na zestawy pociągowe i testowe. 30% zbioru danych trafia do zbioru testowego, co oznacza, że ​​70% danych to zbiór pociągowy.
  • Podstawowy model Knn tworzony jest przy użyciu klasy KNeighborsClassifier.
  • Zestawy pociągów pasują do modelu knn.
  • metoda przewidywania() służy do przeprowadzania przewidywań na zbiorze X_test.

Python3


dynamiczna tablica Java



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

>

>

Wyjście:

[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]