Šiame straipsnyje aptarsime, kaip padalinti duomenų rinkinį naudojant scikit-learns train_test_split().
sklearn.model_selection.train_test_split() funkcija:
Train_test_split() metodas naudojamas mūsų duomenims padalyti į traukinių ir bandymų rinkinius. Pirmiausia turime suskirstyti savo duomenis į funkcijas (X) ir etiketes (y). Duomenų rėmelis yra padalintas į X_train, X_test, y_train ir y_test. Treniruotėms ir modelio pritaikymui naudojami rinkiniai X_train ir y_train. X_test ir y_test rinkiniai naudojami modeliui išbandyti, jei jis numato tinkamus išėjimus / etiketes. galime aiškiai išbandyti traukinio ir bandymų rinkinių dydį. Siūloma, kad mūsų traukinių sąstatai būtų didesni nei bandomieji.
- Traukinio rinkinys: mokymo duomenų rinkinys yra duomenų rinkinys, kuris buvo panaudotas modeliui pritaikyti. Duomenų rinkinys, pagal kurį modelis mokomas. Šiuos duomenis mato ir sužino modelis. Bandymo rinkinys: bandymo duomenų rinkinys yra mokymo duomenų rinkinio poaibis, kuris naudojamas tiksliai įvertinti galutinį modelio tinkamumą. patvirtinimo rinkinys: patvirtinimo duomenų rinkinys yra jūsų modelio mokymo rinkinio duomenų pavyzdys, naudojamas modelio našumui įvertinti derinant modelio hiperparametrus. nepakankamas pritaikymas: nepakankamai pritaikytas duomenų modelis turi didelį klaidų lygį tiek mokymo rinkinyje, tiek nepastebėtuose duomenims, nes jis negali veiksmingai parodyti ryšio tarp įvesties ir išvesties kintamųjų. perderinimas: kai statistinis modelis tiksliai atitinka jo mokymo duomenis, bet prarandamas algoritmo tikslas, nes jis negali tiksliai vykdyti nematomų duomenų, vadinamas perderinimu
Sintaksė: sklearn.model_selection.train_test_split(*arrays, test_size=Nėra, train_size=Nėra, random_state=Nėra, shuffle=Tiesa, stratify=Nėra
Parametrai:
*masyvai: indeksuojamųjų seka. Sąrašai, numpy masyvai, scipy-sparse matricos ir pandos duomenų rėmeliai yra tinkami įvestis. test_size: int arba float, pagal numatytuosius nustatymus Nėra. Jei slankioji, ji turėtų būti nuo 0,0 iki 1,0 ir reikšti bandomo padalyti duomenų rinkinio procentinę dalį. Jei naudojamas int, tai reiškia bendrą tiriamųjų mėginių skaičių. Jei reikšmė yra None, naudojamas traukinio dydžio papildymas. Jis bus nustatytas į 0,25, jei traukinio dydis taip pat yra Nėra. train_size: int arba float, pagal numatytuosius nustatymus Nėra. random_state : int, pagal numatytuosius nustatymus Nėra. Valdo, kaip duomenys maišomi prieš įgyvendinant padalijimą. Jei norite, kad išvestis būtų kartojama per kelis funkcijų iškvietimus, perduokite int. shuffle: loginis objektas , pagal numatytuosius nustatymus True. Ar prieš skaidant duomenis reikia sumaišyti, ar ne. Stratify turi būti None, jei shuffle=False. stratify: į masyvą panašus objektas , pagal numatytuosius nustatymus jis yra None . Jei pasirinkta Nėra, duomenys stratifikuojami naudojant juos kaip klasių etiketes.
Grąžinimai:
padalijimas: Traukinio bandymo įvesties padalijimas pateikiamas kaip sąrašas.
Duomenų rinkinio padalijimo veiksmai:
1 veiksmas: importuokite reikiamus paketus arba modulius:
Šiame žingsnyje mes importuojame reikiamus paketus ar modulius į darbo python aplinką.
Python3
# import packages> import> numpy as np> import> pandas as pd> from> sklearn.model_selection>import> train_test_split> |
>
>
2 veiksmas: importuokite duomenų rėmelį / duomenų rinkinį:
Čia mes įkeliame CSV naudodami pd.read_csv() metodą iš pandų ir gauname duomenų rinkinio formą naudodami shape() funkciją.
Naudojamas CSV:
Python3
# importing data> df>=> pd.read_csv(>'prediction.csv'>)> print>(df.shape)> |
>
>
Išvestis:
(13, 3)>
3 veiksmas: gaukite X ir Y funkcijų kintamuosius:
Čia mes priskiriame X ir Y kintamuosius, kurių X funkcijos kintamasis turi nepriklausomus kintamuosius, o y funkcijos kintamasis turi priklausomą kintamąjį.
Python3
java sąrašas
X>=> df[>'area'>]> y>=>df[>'prices'>]> |
>
>
4 veiksmas: naudokite traukinio bandymo padalijimo klasę, kad padalintumėte duomenis į traukinio ir bandymo rinkinius:
Čia „train_test_split()“ klasė iš sklearn.model_selection naudojama mūsų duomenims padalyti į traukinių ir bandymų rinkinius, kuriuose kaip metodo įvestis pateikiami funkcijų kintamieji. test_size nustato duomenų dalį, kuri pateks į bandymų rinkinius, o duomenų atkuriamumui naudojama atsitiktinė būsena.
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>)> |
>
>
pervardyti Linux aplanką
Pavyzdys:
Šiame pavyzdyje importuojamas failas „predictions.csv“. Atributas df.shape naudojamas duomenų rėmelio formai gauti. Duomenų rėmelio forma yra (13,3). Funkcijų stulpeliai paimami į X kintamąjį, o rezultatų stulpelis – į y kintamąjį. X ir y kintamieji perduodami train_test_split() metodu, kad duomenų rėmelis būtų padalintas į traukinio ir bandymo rinkinius. Atsitiktinės būsenos parametras naudojamas duomenų atkuriamumui užtikrinti. test_size yra 0,25, o tai reiškia, kad 25% duomenų patenka į bandymų rinkinius. 4 iš 13 duomenų rėmo eilučių patenka į bandymų rinkinius. 75 % duomenų patenka į traukinių rinkinius, tai yra 9 eilutės iš 13 eilučių. Traukinių rinkiniai naudojami mašininio mokymosi modeliui pritaikyti ir mokyti. Vertinimui naudojami testų rinkiniai.
Naudojamas 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)> |
>
>
Išvestis:
(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,)>
Pavyzdys:
Šiame pavyzdyje atliekami šie veiksmai:
- Importuojamos reikalingos pakuotės.
- Advertising.csv duomenų rinkinys įkeliamas ir išvalomas, o nulinės reikšmės pašalinamos.
- sukuriami funkcijų ir tikslinių masyvai (X andy).
- Sukurti masyvai yra suskirstyti į traukinių ir bandymų rinkinius. 30 % duomenų rinkinio patenka į bandomąjį rinkinį, o tai reiškia, kad 70 % duomenų yra traukinio rinkinys.
- Sukuriamas standartinis mastelio objektas.
- X_train telpa į skalerį.
- X_train ir X_test transformuojami naudojant transform() metodą.
- Sukuriamas paprastas tiesinės regresijos modelis
- Traukinių komplektai tinka modeliui.
- Prognozuoti () metodas naudojamas X_test rinkinio prognozėms atlikti.
- Metrika mean_squared_error() naudojama modeliui įvertinti.
Norėdami peržiūrėti ir atsisiųsti šiame pavyzdyje naudojamą CSV failą, spustelėkite čia .
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))> |
>
>
Išvestis:
array([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
Pavyzdys:
Šiame pavyzdyje naudosime K-artimiausių kaimynų klasifikatoriaus modelį.
Šiame pavyzdyje atliekami šie veiksmai:
- Importuojamos reikalingos pakuotės.
- rainelės duomenys įkeliami iš sklearn.datasets.
- sukuriami funkcijų ir tikslinių masyvai (X andy).
- Sukurti masyvai yra suskirstyti į traukinių ir bandymų rinkinius. 30 % duomenų rinkinio patenka į bandomąjį rinkinį, o tai reiškia, kad 70 % duomenų yra traukinio rinkinys.
- Pagrindinis Knn modelis sukuriamas naudojant KNeighborsClassifier klasę.
- Traukinių komplektai tinka knn modeliui.
- Prognozuoti () metodas naudojamas X_test rinkinio prognozėms atlikti.
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))> |
>
css paryškintas tekstas
>
Išvestis:
[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]