logo

„StandardScaler“ sistemoje „Sklearn“.

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:

    kopija (bool, numatytasis = True):-Jei šis parametras nustatytas į True, pabandykite išvengti kopijų ir vietoj to pakeiskite pavyzdžių mastelį. Nebūtinai garantuojama, kad tai veiks vietoje; Pavyzdžiui, funkcija vis tiek gali grąžinti kopiją, jei įvestis nėra NumPy masyvo arba scipy.sparse CSR matricos forma.with_mean (bool, numatytasis = True):-Jei parametras nustatytas į True, sucentruokite duomenis, kad jie būtų masteliai. Taikant retas matricas, tai nepavyksta (ir atsiranda išimtis), nes jas centruojant reikia sukurti tankią matricą, kuri daugeliu naudojimo aplinkybių turėtų būti per didelė, kad tilptų į aviną.with_std (bool, numatytasis = True):-Šis parametras įvesties duomenis padidina iki vieneto dispersijos, jei jis nustatytas į true (arba galime sakyti, kad jis sudaro vieneto standartinį nuokrypį).

Atributai:

    scale_ (ndarray, kurio forma yra (n_features,) arba Nėra):-Duomenys yra santykinai suskirstyti pagal kiekvieną ypatybę su nuline vidurkiu ir vieneto dispersija.mean_ (ndarray, kurio forma yra (n_features,) arba Nėra):-Tai yra vidutinė kiekvienos funkcijos mokymo duomenų rinkinio vertė. Kai argumentas with_mean yra nustatytas į False, ši reikšmė lygi None.var_ (ndarray, kurio forma yra (n_features,) arba Nėra):-Tai kiekvienos funkcijos dispersijos vertė mokymo duomenų rinkinyje. Jis naudojamas ypatybių mastui nustatyti. Kai argumentas su_std yra nustatytas į False, ši reikšmė lygi None.n_features_in_ (_int tipo):-Šis atributas nurodo montuojant pastebėtų savybių skaičių.feature_names_in_ (ndarray, kurio forma yra (n_features_in_,)):-Šis atributas yra ypatybės, identifikuojamos pavadinimais montavimo metu. X apibrėžiamas tik tada, kai visi jo elementų pavadinimai yra duomenų tipo eilutės.n_samples_seen_ ( int tipo arba ndarray, kurio forma yra (n_features,)):-Taip pateikiamas mėginių, kuriuos vertintojas ištyrė kiekvienai ypatybei, skaičius.

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