logo

StandardScaler v Sklearnu

Kdaj in kako uporabljati StandardScaler?

Ko značilnosti danega nabora podatkov znatno nihajo znotraj svojih razponov ali so zabeležene v različnih merskih enotah, nastopi StandardScaler.

Podatki so prilagojeni na varianco 1, potem ko se povprečje zmanjša na 0 prek StandardScaler. Toda pri določanju empirične srednje vrednosti podatkov in standardnega odklona imajo izstopajoči podatki, ki so prisotni v podatkih, pomemben vpliv, ki zmanjša spekter značilnih vrednosti.

java pridobi trenutni datum

Mnogi algoritmi strojnega učenja lahko naletijo na težave zaradi teh razlik v začetnih funkcijah. Pri algoritmih, ki na primer izračunajo razdaljo, če ima katera koli značilnost nabora podatkov vrednosti z velikimi ali popolnoma različnimi razponi, bo ta določena značilnost nabora podatkov nadzorovala izračun razdalje.

Funkcija StandardScaler za sklearn temelji na teoriji, da spremenljivke nabora podatkov, katerih vrednosti ležijo v različnih razponih, nimajo enakega prispevka k parametrom prileganja modela in funkciji usposabljanja in lahko celo povzročijo pristranskost v napovedih, narejenih s tem modelom.

Zato moramo pred vključitvijo funkcij v model strojnega učenja podatke normalizirati (µ = 0, σ = 1). Za reševanje te morebitne težave se običajno uporablja standardizacija v inženirstvu funkcij.

Standardizacija z uporabo Sklearn

 sklearn.preprocessing.StandardScaler(*, copy = True, with_mean = True, with_std = True) 

Z izločitvijo povprečja iz funkcij in njihovo skaliranjem na varianco enote so funkcije standardizirane s to funkcijo.

Formula za izračun standardne ocene funkcije je z = (x - u) / s, kjer je u povprečje funkcije usposabljanja (ali nič, če with_mean = False), s pa standardni odklon vzorca (ali ena, če with_std = False ).

Z izračunom ustreznih statističnih podatkov o funkcijah v učnem nizu se centriranje in skaliranje uporabita neodvisno za vsako funkcijo. Nato za uporabo s kasnejšimi vzorci z uporabo transform() metoda fit() shrani povprečje in standardni odklon.

Parametri:

    kopija (bool, privzeto = True):-Če je ta parameter nastavljen na True, se poskusite izogniti kopijam in namesto tega spremenite velikost vzorcev na mestu. Ni nujno, da bo to delovalo na mestu; funkcija lahko na primer še vedno vrne kopijo, če vnos ni v obliki matrike NumPy ali matrike CSR scipy.sparse.with_mean (bool, privzeto = True):-Če je parameter nastavljen na True, prilagodite podatke, potem ko jih centrirate. Pri uporabi za redke matrike to ne uspe (in sproži izjemo), saj je za njihovo centriranje potrebna konstrukcija goste matrike, za katero se v večini primerov uporabe pričakuje, da bo prevelika, da bi se prilegala v ram.with_std (bool, privzeto = True):-Ta parameter meri vhodne podatke na varianco enote, če je nastavljen na true (ali lahko rečemo, da naredi standardni odklon enote).

Lastnosti:

    scale_ (ndarray ima obliko (n_features,) ali None):-Podatki so relativno skalirani za vsako značilnost z ničelno srednjo vrednostjo in varianco enote.mean_ (ndarray ima obliko (n_features,) ali None):-Je povprečna vrednost nabora podatkov o usposabljanju za vsako funkcijo. Ko je argument with_mean nastavljen na False, je ta vrednost enaka None.var_ (ndarray ima obliko (n_features,) ali None):-Je vrednost variance vsake funkcije v naboru podatkov za usposabljanje. Uporablja se za določanje obsega funkcij. Ko je argument with_std nastavljen na False, je ta vrednost enaka None.n_features_in_ (tipa _int):-Ta atribut podaja število lastnosti, opaženih pri nameščanju.feature_names_in_ (ndarray ima obliko (n_features_in_,)):-Ta atribut so lastnosti, ki jih med prilagajanjem identificiramo z imeni. X je definiran le, če so vsa njegova imena funkcij podatkovnega tipa niz.n_samples_seen_ (tipa int ali ndarray, ki ima obliko (n_features,)):-To podaja število vzorcev, ki jih je ocenjevalec pregledal za vsako značilnost.

Metode razreda StandardScaler

prileganje (X[, y, teža_vzorca]) Ta metoda izračuna povprečje in standardno odstopanje, ki se pozneje uporabi za skaliranje podatkov.
fit_transform(X[, y]) Ta metoda se prilega parametrom podatkov in jih nato preoblikuje.
get_feature_names_out([input_features]) Ta metoda pridobi imena funkcij za transformacijo.
get_params([globoko]) Ta metoda daje parametre določenega ocenjevalca.
inverzna_transformacija(X[, kopiraj]) Zmanjša velikost podatkov, da se ujemajo z izvirno obliko.
delno_fit(X[, y, teža_vzorca]) Povprečna vrednost in standardni odklon na X se izračunata na spletu za kasnejše skaliranje.
set_params(**params) Ta metoda se uporablja za nastavitev vrednosti parametrov ocenjevalca.
preobrazba (X[, kopiraj]) Ta metoda pretvori podatke z uporabo parametrov, ki so že shranjeni v razredu.

Primer StandardScaler

Najprej bomo uvozili zahtevane knjižnice. Za uporabo funkcije StandardScaler moramo uvoziti knjižnico Sklearn.

Nato bomo naložili nabor podatkov šarenice. Nabor podatkov IRIS lahko uvozimo iz knjižnice sklearn.datasets.

Ustvarili bomo objekt razreda StandardScaler.

dereference kazalec

Ločevanje neodvisnih in ciljnih lastnosti.

Za implementacijo transformacije v nabor podatkov bomo uporabili metodo fit transform().

Sintaksa:

 object_ = StandardScaler() object_.fit_transform(features) 

Sprva smo zgradili primerek metode StandardScaler() po zgoraj omenjeni sintaksi. Poleg tega standardiziramo podatke z uporabo fit_transform() skupaj s podanim objektom.

Koda

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

Izhod

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