Kada ir kaip naudoti „StandardScaler“?
Kai tam tikro duomenų rinkinio ypatybės labai svyruoja savo diapazonuose arba įrašomos įvairiais matavimo vienetais, „StandardScaler“ įveda vaizdą.
Duomenų skalė keičiama iki 1, kai vidurkis sumažinamas iki 0 naudojant StandardScaler. Tačiau nustatant empirinį duomenų vidurkį ir standartinį nuokrypį, duomenyse esantys nuokrypiai turi reikšmingą poveikį, kuris sumažina charakteristikų reikšmių spektrą.
Daugelis mašininio mokymosi algoritmų gali susidurti su problemomis dėl šių pradinių funkcijų skirtumų. Pavyzdžiui, atstumą apskaičiuojantiems algoritmams, jei kurios nors duomenų rinkinio ypatybės turi didelius arba visiškai skirtingus diapazonus, ta konkreti duomenų rinkinio funkcija valdys atstumo skaičiavimą.
„StandardScaler“ funkcija sklearn yra pagrįsta teorija, kad duomenų rinkinio kintamieji, kurių reikšmės yra skirtinguose diapazonuose, neturi vienodo indėlio į modelio tinkamumo parametrus ir mokymo funkciją ir netgi gali sukelti šališkumą to modelio prognozėse.
Todėl prieš įtraukdami ypatybes į mašininio mokymosi modelį, turime normalizuoti duomenis (µ = 0, σ = 1). Šiai galimai problemai išspręsti dažniausiai taikoma funkcijų inžinerijos standartizacija.
Standartizavimas naudojant Sklearn
sklearn.preprocessing.StandardScaler(*, copy = True, with_mean = True, with_std = True)
Pašalinus ypatybių vidurkį ir padidinus jų mastelį iki vieneto dispersijos, funkcijos standartizuojamos naudojant šią funkciją.
Standartinio objekto balo apskaičiavimo formulė yra z = (x - u) / s, kur u yra mokymo bruožo vidurkis (arba nulis, jei with_mean = klaidingas), o s yra standartinis imties nuokrypis (arba vienas, jei with_std = klaidingas ).
Skaičiuojant atitinkamą statistiką apie treniruočių rinkinio ypatybes, kiekvienai funkcijai atskirai taikomas centravimas ir mastelio keitimas. Tada, norint naudoti su vėlesniais pavyzdžiais naudojant transform(), fit() metodas išsaugo vidurkį ir standartinį nuokrypį.
Parametrai:
Atributai:
„StandardScaler“ klasės metodai
tinka(X[, y, mėginio_svoris]) | Šis metodas apskaičiuoja vidurkį ir standartinį nuokrypį, kuris vėliau bus naudojamas duomenims keisti. |
tinka_transformacija(X[, y]) | Šis metodas atitinka duomenų parametrus ir tada juos transformuoja. |
get_feature_names_out([input_features]) | Šis metodas gauna transformacijos funkcijų pavadinimus. |
get_params ([giliai]) | Šis metodas pateikia konkretaus įverčio parametrus. |
atvirkštinė_transformacija(X[, kopija]) | Tai sumažina duomenų dydį, kad atitiktų pradinę formą. |
dalinis_tinkamumas(X[, y, mėginio_svoris]) | X vidurkis ir standartinis nuokrypis apskaičiuojami internete, kad vėliau būtų galima keisti mastelį. |
set_params(**params) | Šis metodas naudojamas įverčio parametrų reikšmėms nustatyti. |
transformuoti (X[, kopijuoti]) | Šis metodas transformuoja duomenis naudodamas klasėje jau saugomus parametrus. |
„StandardScaler“ pavyzdys
Pirmiausia importuosime reikiamas bibliotekas. Norėdami naudoti „StandardScaler“ funkciją, turime importuoti „Sklearn“ biblioteką.
Tada įkelsime rainelės duomenų rinkinį. Galime importuoti IRIS duomenų rinkinį iš sklearn.datasets bibliotekos.
Sukursime StandardScaler klasės objektą.
Nepriklausomų ir tikslinių savybių atskyrimas.
Norėdami įgyvendinti transformaciją į duomenų rinkinį, naudosime fit transform() metodą.
Sintaksė:
object_ = StandardScaler() object_.fit_transform(features)
Iš pradžių sukūrėme „StandardScaler()“ metodo egzempliorių, vadovaudamiesi aukščiau minėta sintaksė. Be to, standartizuojame duomenis naudodami fit_transform() kartu su pateiktu objektu.
Kodas
# Python program to standardize the data # Importing the required library from sklearn.preprocessing import StandardScaler from sklearn.datasets import load_iris # Loading the dataset X, Y = load_iris(return_X_y = True) # Printing 3 rows of original data print(X[:3, :]) # Creating an object of the StandardScaler class std_scaler = StandardScaler() # Printing 3 rows of the transformed data print(std_scaler.fit_transform(X)[:3, :]) print(std_scaler.mean_)
Išvestis
[[5.1 3.5 1.4 0.2] [4.9 3. 1.4 0.2] [4.7 3.2 1.3 0.2]] [[-0.90068117 1.01900435 -1.34022653 -1.3154443 ] [-1.14301691 -0.13197948 -1.34022653 -1.3154443 ] [-1.38535265 0.32841405 -1.39706395 -1.3154443 ]] [5.84333333 3.05733333 3.758 1.19933333]