logo

Jak wykonać podział testu pociągu za pomocą Sklearn w Pythonie

W tym artykule dowiemy się, jak wykonać podział testu pociągu za pomocą Sklearn w Pythonie.

Podział testu pociągu za pomocą Sklearn

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.

Zestaw 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.

emoji iPhone'a na telefonie z Androidem

domyślnie 25% naszych danych to zestaw testowy, a 75% danych trafia do testów uczących.

Składnia: sklearn.model_selection.train_test_split()



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 Brak. Jeśli wybrano opcję Brak, dane są stratyfikowane przy użyciu tych etykiet jako etykiet klas.

zwroty: podział: lista

Przykład 1:

Importowane są pakiety numpy, pandas i scikit-learn. Plik CSV zostanie zaimportowany. X zawiera funkcje, a y to etykiety. dzielimy ramkę danych na X i Y i przeprowadzamy na nich podział testu pociągu. random_state działa jak ziarno numpy, służy do odtwarzalności danych. test_size ma wartość 0,25, co oznacza, że ​​25% naszych danych trafia do naszego rozmiaru testowego. 1-test_size to rozmiar naszego pociągu, nie musimy tego określać. shuffle = True, tasuje nasze dane przed rozlaniem. Zbiory X_train i X_test służą do dopasowywania i uczenia naszego modelu, a zbiory testowe służą do testowania i walidacji.

Aby uzyskać dostęp do pliku CSV, kliknij Tutaj.

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(>'headbrain1.csv'>)> > # head of the data> print>(df.head())> > X>=> df[>'Head Size(cm^3)'>]> y>=>df[>'Brain Weight(grams)'>]> > # 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>('')> print>(>'X_test : '>)> print>(X_test.head())> print>('')> print>(>'y_train : '>)> print>(y_train.head())> print>('')> print>(>'y_test : '>)> print>(y_test.head())>

>

modele uczenia maszynowego

>

Wyjście:

 Head Size(cm^3) Brain Weight(grams) 0 4512 1530 1 3738 1297 2 4261 1335 3 3777 1282 4 4177 1590 X_train : 99 3478 52 4270 184 3479 139 3171 107 3399 Name: Head Size(cm^3), dtype: int64 (177,) X_test : 66 3415 113 3594 135 3436 227 4204 68 4430 Name: Head Size(cm^3), dtype: int64 (60,) y_train : 99 1270 52 1335 184 1160 139 1127 107 1226 Name: Brain Weight(grams), dtype: int64 (177,) y_test : 66 1310 113 1290 135 1235 227 1380 68 1510 Name: Brain Weight(grams), dtype: int64 (60,)>

Przykład 2:

W tym przykładzie wykonano te same kroki, zamiast określać rozmiar_testu, podajemy rozmiar_treningu. test_size to 1-train_size. 80% danych to zbiór pociągów, więc 20% naszych danych to zbiór testowy. Jeśli nie określimy rozmiarów zestawów testowych i pociągowych, domyślnie test_size będzie wynosić 0,25. X_train i y_train mają ten sam kształt i indeksy, ponieważ y_train jest etykietą funkcji X_train. to samo dotyczy X_test i y_test.

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(>'headbrain1.csv'>)> print>(df.shape)> > # head of the data> print>(df.head())> > X>=> df[>'Head Size(cm^3)'>]> y>=>df[>'Brain Weight(grams)'>]> > # using the train test split function> X_train, X_test, y_train,> y_test>=> train_test_split(X,y ,> >random_state>=>104>,> >train_size>=>0.8>, 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:

(237, 2) Head Size(cm^3) Brain Weight(grams) 0 4512 1530 1 3738 1297 2 4261 1335 3 3777 1282 4 4177 1590 X_train : 110 3695 164 3497 58 3935 199 3297 182 4005 Name: Head Size(cm^3), dtype: int64 (189,) X_test : 66 3415 113 3594 135 3436 227 4204 68 4430 Name: Head Size(cm^3), dtype: int64 (48,) y_train : 110 1310 164 1280 58 1330 199 1220 182 1280 Name: Brain Weight(grams), dtype: int64 (189,) y_test : 66 1310 113 1290 135 1235 227 1380 68 1510 Name: Brain Weight(grams), dtype: int64 (48,)>