logo

StandardScaler Sklearnissa

Milloin ja miten StandardScaleria käytetään?

Kun tietyn tietojoukon ominaisuudet vaihtelevat merkittävästi omilla alueillaan tai ne tallennetaan eri mittayksiköihin, StandardScaler tulee kuvaan.

Tiedot skaalataan varianssiin 1 sen jälkeen, kun keskiarvo on vähennetty nollaan StandardScalerin avulla. Mutta määritettäessä datan empiiristä keskiarvoa ja keskihajontaa, tiedoissa esiintyvillä poikkeavuuksilla on merkittävä vaikutus, joka pienentää ominaisarvojen spektriä.

Monet koneoppimisalgoritmit voivat kohdata ongelmia näiden aloitusominaisuuksien vaihtelujen vuoksi. Algoritmeille, jotka laskevat etäisyyttä, esimerkiksi jos jollakin tietojoukon ominaisuuksista on arvot, joilla on suuret tai täysin erilaiset alueet, tietojoukon kyseinen ominaisuus ohjaa etäisyyslaskentaa.

Sklearnin StandardScaler-funktio perustuu teoriaan, että tietojoukon muuttujat, joiden arvot ovat eri alueilla, eivät vaikuta yhtä paljon mallin sovitusparametreihin ja harjoitusfunktioon ja voivat jopa johtaa harhaan tällä mallilla tehdyissä ennusteissa.

Siksi ennen ominaisuuksien sisällyttämistä koneoppimismalliin meidän on normalisoitava tiedot (µ = 0, σ = 1). Ominaisuussuunnittelun standardointia käytetään yleisesti tämän mahdollisen ongelman ratkaisemiseksi.

Standardointi Sklearnilla

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

Eliminoimalla ominaisuuksien keskiarvo ja skaalaamalla ne yksikkövarianssiin, ominaisuudet standardoidaan tällä toiminnolla.

stdin c -ohjelmointi

Ominaisuuden vakiopistemäärän laskentakaava on z = (x - u) / s, jossa u on harjoitusominaisuuden keskiarvo (tai nolla, jos kanssa_keskiarvo = epätosi) ja s on otoksen keskihajonta (tai yksi, jos with_std = false) ).

Laskemalla asiaankuuluvat tilastot harjoitussarjan ominaisuuksista, keskitys ja skaalaus sovelletaan itsenäisesti jokaiseen ominaisuuteen. Sitten käytettäväksi myöhempien näytteiden kanssa transform()-funktiolla, fit()-menetelmä tallentaa keskiarvon ja keskihajonnan.

Parametrit:

    kopioi (bool, oletus = tosi):-Jos tämän parametrin arvo on True, yritä välttää kopioita ja sen sijaan skaalata näytteet paikoilleen. Tämän ei välttämättä ole taattu toimivan paikallaan; esimerkiksi funktio saattaa silti palauttaa kopion, jos syöte ei ole NumPy-taulukon tai scipy.sparse CSR-matriisin muodossa.with_mean (bool, oletus = tosi):-Jos parametrin arvo on True, skaalaa tiedot keskittämisen jälkeen. Harvaan matriiseihin sovellettaessa tämä epäonnistuu (ja aiheuttaa poikkeuksen), koska niiden keskittäminen edellyttää tiheän matriisin rakentamista, jonka useimmissa käyttöolosuhteissa odotetaan olevan liian suuri mahtuakseen pässiin.with_std (bool, oletus = tosi):-Tämä parametri skaalaa syöttötiedot yksikkövarianssiin, jos se on tosi (tai voidaan sanoa, että se tekee yksikön keskihajonnan).

Ominaisuudet:

    scale_ (ndarray, jonka muoto on (n_features,) tai Ei mitään):-Tiedot skaalataan suhteellisen kullekin ominaisuudelle nollakeskiarvolla ja yksikkövarianssilla.mean_ (ndarray, jonka muoto on (n_features,) tai Ei mitään):-Se on harjoitustietojoukon keskiarvo jokaiselle ominaisuudelle. Kun argumentin with_mean arvoksi on asetettu False, tämä arvo on Ei mitään.var_ (ndarray, jonka muoto on (n_features,) tai Ei mitään):-Se on kunkin ominaisuuden varianssin arvo harjoitustietojoukossa. Sitä käytetään määrittämään ominaisuuksien laajuus. Kun argumentin with_std arvoksi on asetettu False, tämä arvo on Ei mitään.n_features_in_ (tyyppiä _int):-Tämä attribuutti ilmoittaa sovitettaessa havaittujen ominaisuuksien lukumäärän.feature_names_in_ (ndarray, jonka muoto on (n_features_in_,)):-Tämä attribuutti on ominaisuuksia, jotka tunnistetaan nimillä sovituksen aikana. X määritellään vain, kun kaikki sen ominaisuuksien nimet ovat tietotyyppimerkkijonoa.n_samples_seen_ ( int-tyyppinen tai ndarray, jonka muoto on (n_features,)):-Tämä antaa näytteiden lukumäärän, jonka estimaattori tutki kunkin ominaisuuden osalta.

StandardScaler-luokan menetelmät

sovi(X[, y, näytteen_paino]) Tämä menetelmä laskee keskiarvon ja keskihajonnan käytettäväksi myöhemmin tietojen skaalauksessa.
sovi_muunnos(X[, y]) Tämä menetelmä sovittaa datan parametrit ja muuntaa sen sitten.
get_feature_names_out([input_features]) Tämä menetelmä hankkii muunnoksen ominaisuuksien nimet.
get_params([syvä]) Tämä menetelmä antaa tietyn estimaattorin parametrit.
käänteinen_muunnos(X[, kopioi]) Se pienentää tietojen kokoa vastaamaan sen alkuperäistä muotoa.
osittainen_sovitus(X[, y, näytteen_paino]) X:n keskiarvo ja keskihajonta lasketaan verkossa myöhempää skaalausta varten.
set_params(**params) Tätä menetelmää käytetään estimaattorin parametrien arvon asettamiseen.
muunnos(X[, kopioi]) Tämä menetelmä muuntaa tiedot käyttämällä luokkaan jo tallennettuja parametreja.

Esimerkki StandardScalerista

Ensin tuomme tarvittavat kirjastot. Jotta voisimme käyttää StandardScaler-toimintoa, meidän on tuotava Sklearn-kirjasto.

Sitten lataamme iiristietojoukon. Voimme tuoda IRIS-tietojoukon sklearn.datasets-kirjastosta.

Luomme StandardScaler-luokan objektin.

Itsenäisten ja kohdeominaisuuksien erottaminen.

Käytämme fit transform() -menetelmää muunnoksen toteuttamiseen tietojoukkoon.

Syntaksi:

 object_ = StandardScaler() object_.fit_transform(features) 

Alun perin rakensimme StandardScaler()-menetelmän esiintymän edellä mainittua syntaksia noudattaen. Lisäksi standardoimme tiedot käyttämällä fit_transform()-komentoa yhdessä tarjotun objektin kanssa.

int char

Koodi

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

Lähtö

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