logo

StandardScaler ve Sklearnu

Kdy a jak používat StandardScaler?

Když vlastnosti daného datového souboru výrazně kolísají v rámci svých rozsahů nebo jsou zaznamenány v různých měrných jednotkách, vstupuje do obrazu StandardScaler.

Data jsou škálována na rozptyl 1 poté, co se průměr sníží na 0 pomocí StandardScaler. Ale při určování empirického průměru dat a směrodatné odchylky mají odlehlé hodnoty přítomné v datech významný dopad, který snižuje spektrum charakteristických hodnot.

Mnoho algoritmů strojového učení může narazit na problémy kvůli těmto odchylkám ve výchozích funkcích. U algoritmů, které počítají vzdálenost, například pokud má některá z vlastností datové sady hodnoty s velkým nebo zcela odlišným rozsahem, bude výpočet vzdálenosti řídit tato konkrétní funkce datové sady.

Funkce StandardScaler sklearn je založena na teorii, že proměnné datové sady, jejichž hodnoty leží v různých rozmezích, nemají stejný příspěvek k parametrům přizpůsobení modelu a trénovací funkci a mohou dokonce vést ke zkreslení předpovědí vytvořených s tímto modelem.

Proto před zahrnutím funkcí do modelu strojového učení musíme data normalizovat (µ = 0, σ = 1). Standardizace v inženýrství funkcí se běžně používá k řešení tohoto potenciálního problému.

Standardizace pomocí Sklearn

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

Odstraněním průměru z funkcí a jejich škálováním na jednotkovou odchylku jsou funkce standardizovány pomocí této funkce.

Vzorec pro výpočet standardního skóre prvku je z = (x - u) / s, kde u je průměr trénovacího prvku (nebo nula, pokud with_mean = False) a s je standardní odchylka vzorku (nebo jedna, pokud with_std = False ).

Výpočtem příslušných statistik o funkcích v trénovací sadě se centrování a škálování aplikují nezávisle na každý prvek. Poté, pro použití s ​​pozdějšími vzorky pomocí transform(), metoda fit() uloží střední hodnotu a standardní odchylku.

Parametry:

    kopírovat (bool, výchozí = True):-Pokud je tento parametr nastaven na hodnotu True, zkuste se vyhnout kopiím a místo toho škálujte vzorky na místě. To nemusí nutně fungovat na místě; například funkce může stále vracet kopii, pokud vstup není ve formě pole NumPy nebo matice CSR scipy.sparse.with_mean (bool, výchozí = True):-Pokud je parametr nastaven na hodnotu True, měřítko dat po vystředění. Při aplikaci na řídké matice to selže (a vyvolá výjimku), protože jejich vystředění vyžaduje konstrukci husté matice, o které se ve většině případů použití očekává, že bude příliš velká, aby se vešla do berana.with_std (bool, výchozí = True):-Tento parametr přizpůsobí vstupní data jednotkovému rozptylu, pokud je nastaven na hodnotu true (nebo můžeme říci, že tvoří jednotkovou směrodatnou odchylku).

Atributy:

    scale_ (ndarray má tvar (n_features,) nebo None):-Data jsou relativně škálována pro každý prvek s nulovým průměrem a jednotkovým rozptylem.mean_ (ndarray má tvar (n_features,) nebo None):-Je to průměrná hodnota trénovací datové sady pro každou funkci. Když je argument with_mean nastaven na False, tato hodnota se rovná None.var_ (ndarray má tvar (n_features,) nebo None):-Je to hodnota rozptylu každé funkce v trénovací datové sadě. Používá se k určení rozsahu funkcí. Když je argument with_std nastaven na hodnotu False, tato hodnota se rovná žádné.n_features_in_ (typu _int):-Tento atribut udává počet prvků zjištěných při montáži.feature_names_in_ (ndarray má tvar jako (n_features_in_,)):-Tento atribut jsou prvky identifikované jmény během montáže. X je definováno pouze v případě, že všechny jeho názvy prvků jsou řetězce datového typu.n_samples_seen_ (typu int nebo ndarray s tvarem jako (n_features,)):-To udává počet vzorků, které odhadce zkoumal pro každý prvek.

Metody třídy StandardScaler

fit(X[, y, váha_vzorku]) Tato metoda vypočítá průměr a směrodatnou odchylku pro pozdější použití pro škálování dat.
fit_transform(X[, y]) Tato metoda vyhovuje parametrům dat a následně je transformuje.
get_feature_names_out([input_features]) Tato metoda získává názvy prvků pro transformaci.
get_params([deep]) Tato metoda poskytuje parametry konkrétního odhadu.
inverzní_transformace(X[, kopie]) Zmenšuje velikost dat tak, aby odpovídala jejich původní podobě.
částečné_fit(X[, y, váha_vzorku]) Průměr a směrodatná odchylka na X jsou vypočítány online pro pozdější škálování.
set_params(**params) Tato metoda se používá k nastavení hodnoty parametrů estimátoru.
transform(X[, kopie]) Tato metoda transformuje data pomocí parametrů již uložených ve třídě.

Příklad StandardScaler

Nejprve naimportujeme požadované knihovny. Pro použití funkce StandardScaler musíme importovat knihovnu Sklearn.

Poté načteme datovou sadu duhovky. Dataset IRIS můžeme importovat z knihovny sklearn.datasets.

Vytvoříme objekt třídy StandardScaler.

Oddělení nezávislých a cílových prvků.

K implementaci transformace do datové sady použijeme metodu fit transform().

Syntax:

 object_ = StandardScaler() object_.fit_transform(features) 

Původně jsme vytvořili instanci metody StandardScaler() podle výše uvedené syntaxe. Data navíc standardizujeme pomocí fit_transform() spolu s poskytnutým objektem.

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

Výstup

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