logo

StandardScaler a Sklearnben

Mikor és hogyan kell használni a StandardScalert?

Ha az adott adatkészlet jellemzői jelentősen ingadoznak a tartományukon belül, vagy különböző mértékegységekben vannak rögzítve, a StandardScaler belép a képbe.

Az adatok 1-es varianciára skálázódnak, miután az átlagot a StandardScaler segítségével 0-ra csökkentették. Ám az adatok empirikus átlagának és a szórásnak a meghatározásakor az adatokban jelenlévő kiugró értékeknek jelentős hatása van, ami csökkenti a jellemző értékek spektrumát.

Sok gépi tanulási algoritmus problémákba ütközhet az induló funkciók ezen eltérései miatt. A távolságot számító algoritmusok esetében például, ha az adatkészlet bármely jellemzője nagy vagy teljesen eltérő tartományú értékekkel rendelkezik, az adatkészlet adott jellemzője szabályozza a távolságszámítást.

java tömb lista

A sklearn StandardScaler függvénye azon az elméleten alapul, hogy az adathalmaz változói, amelyek értéke különböző tartományba esik, nem járulnak hozzá egyenlő mértékben a modell illeszkedési paramétereihez és a betanítási függvényhez, és akár torzításhoz is vezethetnek az adott modellel készített előrejelzésekben.

Ezért, mielőtt a jellemzőket belefoglalnánk a gépi tanulási modellbe, normalizálnunk kell az adatokat (µ = 0, σ = 1). A funkciótervezés szabványosítását általában ennek a lehetséges problémának a megoldására alkalmazzák.

Szabványosítás a Sklearn használatával

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

A jellemzők átlagának kiiktatásával és egységvarianciára skálázásával a jellemzők szabványosításra kerülnek ezzel a funkcióval.

A jellemző standard pontszámának kiszámításának képlete: z = (x - u) / s, ahol u a betanítási jellemző átlaga (vagy nulla, ha with_mean = hamis), s pedig a minta szórása (vagy egy, ha with_std = hamis ).

A képzési készlet jellemzőire vonatkozó releváns statisztikák kiszámításával a központosítást és a skálázást az egyes jellemzőkre függetlenül alkalmazzák. Ezután a későbbi mintákhoz a transform() használatával a fit() metódus tárolja az átlagot és a szórást.

hogyan kell rendezni a tömblistát java-ban

Paraméterek:

    másolat (bool, alapértelmezett = True):-Ha ez a paraméter True értékre van állítva, próbálja meg elkerülni a másolatokat, és inkább a helyükön méretezze meg a mintákat. Ez nem feltétlenül garantált, hogy a helyén működik; Például a függvény akkor is visszaadhat egy másolatot, ha a bemenet nem NumPy tömb vagy scipy.sparse CSR mátrix formájában van.with_mean (bool, alapértelmezett = igaz):-Ha a paraméter értéke True, akkor a központosítás után méretezze az adatokat. Ha ritka mátrixokra alkalmazzuk, ez kudarcot vall (és kivételt jelent), mivel a központosításuk sűrű mátrix felépítését teszi szükségessé, amely a legtöbb használati körülményben várhatóan túl nagy ahhoz, hogy elférjen a ramban.with_std (bool, alapértelmezett = igaz):-Ez a paraméter a bemeneti adatokat mértékegységvarianciára skálázza, ha igazra van állítva (vagy mondhatjuk, hogy egységnyi szórást ad).

Tulajdonságok:

    scale_ (ndarray, amelynek alakja (n_features,) vagy None):-Az adatok viszonylag skálázva vannak az egyes jellemzőkre nulla átlaggal és egységnyi szórással.mean_ (ndarray, amelynek alakja (n_features,) vagy Nincs):-Ez a képzési adatkészlet átlagos értéke minden funkcióhoz. Ha a with_mean argumentum értéke False, akkor ez az érték egyenlő a None értékkel.var_ (ndarray, amelynek alakja (n_features,) vagy Nincs):-Ez az egyes jellemzők varianciájának értéke a betanítási adatkészletben. A jellemzők léptékének meghatározására szolgál. Ha a with_std argumentum értéke False, akkor ez az érték egyenlő a None értékkel.n_features_in_ (_int típusú):-Ez az attribútum megadja az illesztéskor észlelt jellemzők számát.feature_names_in_ (ndarray, amelynek alakja (n_features_in_,)):-Ez az attribútum az illesztés során nevek által azonosított jellemzők. Az X csak akkor van definiálva, ha az összes jellemző neve adattípusú karakterlánc.n_samples_seen_ ( int típusú vagy ndarray, amelynek alakja (n_features,)):-Ez megadja azoknak a mintáknak a számát, amelyeket a becslő az egyes jellemzőkre megvizsgált.

A StandardScaler osztály módszerei

illeszkedés(X[, y, minta_súlya]) Ez a módszer kiszámítja az átlagot és a szórást, amelyet később az adatok skálázásához használ.
fit_transform(X[, y]) Ez a módszer illeszkedik az adatok paramétereihez, majd átalakítja azokat.
get_feature_names_out([input_features]) Ez a metódus lekéri az átalakítás jellemzőneveit.
get_params([mély]) Ez a módszer megadja az adott becslő paramétereit.
inverz_transzformáció(X[, másolás]) Csökkenti az adatok méretét, hogy megfeleljen az eredeti formájának.
részleges_illesztés(X[, y, minta_súlya]) Az X átlagát és szórását a rendszer online számítja ki a későbbi skálázáshoz.
set_params(**params) Ez a módszer a becslő paramétereinek értékének beállítására szolgál.
transzformáció(X[, másolás]) Ez a metódus átalakítja az adatokat az osztályban már tárolt paraméterek felhasználásával.

Példa a StandardScalerre

Először is importáljuk a szükséges könyvtárakat. A StandardScaler függvény használatához importálnunk kell a Sklearn könyvtárat.

Ezután betöltjük az írisz adatkészletet. Az IRIS adatkészletet importálhatjuk a sklearn.datasets könyvtárból.

Létrehozunk egy objektumot a StandardScaler osztályból.

A független és céljellemzők elkülönítése.

mycricketlive

A fit transform() metódus segítségével hajtjuk végre az átalakítást az adatkészletbe.

Szintaxis:

 object_ = StandardScaler() object_.fit_transform(features) 

Kezdetben elkészítettük a StandardScaler() metódus egy példányát a fent említett szintaxist követve. Ezenkívül szabványosítjuk az adatokat a fit_transform() és a megadott objektum használatával.

Kód

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

Kimenet

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