logo

StandardScaler w Sklearn

Kiedy i jak używać StandardScaler?

Gdy cechy danego zbioru danych znacznie oscylują w swoich zakresach lub są zapisane w różnych jednostkach miary, na scenę wkracza StandardScaler.

Dane są skalowane do wariancji 1 po zmniejszeniu średniej do 0 za pomocą narzędzia StandardScaler. Jednak przy wyznaczaniu średniej empirycznej danych i odchylenia standardowego, obecne w danych wartości odstające mają istotny wpływ, który zawęża spektrum wartości charakterystycznych.

klasa ciągów Java

Wiele algorytmów uczenia maszynowego może napotkać problemy ze względu na różnice w funkcjach początkowych. Na przykład w przypadku algorytmów obliczających odległość, jeśli którakolwiek z cech zbioru danych ma wartości o dużych lub całkowicie różnych zakresach, ta konkretna cecha zbioru danych będzie kontrolować obliczanie odległości.

Funkcja StandardScaler sklearn opiera się na teorii, że zmienne zbioru danych, których wartości mieszczą się w różnych zakresach, nie mają równego udziału w parametrach dopasowania modelu i funkcji szkoleniowej, a nawet mogą prowadzić do błędu w przewidywaniach dokonanych za pomocą tego modelu.

Dlatego przed włączeniem funkcji do modelu uczenia maszynowego musimy znormalizować dane (µ = 0, σ = 1). Aby rozwiązać ten potencjalny problem, powszechnie stosuje się standaryzację w inżynierii cech.

Standaryzacja przy użyciu Sklearn

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

Eliminując średnią z cech i skalując je do wariancji jednostkowej, cechy są standaryzowane przy użyciu tej funkcji.

Wzór na obliczenie wyniku standardowego cechy to z = (x - u) / s, gdzie u to średnia cechy uczącej (lub zero, jeśli with_mean = False), a s to odchylenie standardowe próbki (lub jeden, jeśli with_std = False ).

aktor Zeenat Aman

Obliczając odpowiednie statystyki dotyczące cech w zbiorze uczącym, centrowanie i skalowanie są stosowane niezależnie do każdej cechy. Następnie, do wykorzystania w późniejszych próbkach przy użyciu funkcji transform(), metoda fit() przechowuje średnią i odchylenie standardowe.

Parametry:

    kopiuj (bool, domyślnie = True): -Jeśli ten parametr jest ustawiony na True, staraj się unikać kopii i zamiast tego skaluj próbki w miejscu. Nie ma koniecznie gwarancji, że będzie to działać; na przykład funkcja może nadal zwracać kopię, jeśli dane wejściowe nie mają postaci tablicy NumPy lub macierzy CSR scipy.sparse.with_mean (bool, domyślnie = True): -Jeśli parametr jest ustawiony na True, skaluj dane po ich wycentrowaniu. W zastosowaniu do rzadkich macierzy kończy się to niepowodzeniem (i powoduje wyjątek), ponieważ ich wyśrodkowanie wymaga zbudowania gęstej macierzy, która w większości przypadków użytkowania będzie zbyt duża, aby zmieściła się w ramce.with_std (bool, domyślnie = True): -Ten parametr skaluje dane wejściowe do wariancji jednostkowej, jeśli jest ustawiony na wartość true (lub możemy powiedzieć, że tworzy odchylenie standardowe jednostki).

Atrybuty:

    skala_ (ndarray mający kształt (n_features,) lub Brak): -Dane są skalowane względnie dla każdej cechy ze średnią zerową i wariancją jednostkową.mean_ (ndarray mający kształt (n_features,) lub Brak): -Jest to średnia wartość zbioru danych szkoleniowych dla każdej cechy. Gdy argument with_mean jest ustawiony na False, ta wartość jest równa None.var_ (ndarray mający kształt (n_features,) lub Brak): -Jest to wartość wariancji każdej cechy w zbiorze danych szkoleniowych. Służy do określenia skali cech. Gdy argument with_std jest ustawiony na False, ta wartość jest równa None.n_features_in_ (typu _int): -Ten atrybut podaje liczbę cech wykrytych podczas montażu.feature_names_in_ (ndarray mający kształt jako (n_features_in_,)): -Ten atrybut to cechy identyfikowane poprzez nazwy podczas dopasowywania. X jest zdefiniowany tylko wtedy, gdy wszystkie jego nazwy funkcji mają typ danych typu string.n_samples_seen_ (typu int lub ndarray mający kształt (n_features,)): -Daje to liczbę próbek zbadanych przez estymator dla każdej cechy.

Metody klasy StandardScaler

fit(X[, y, waga_próbki]) Ta metoda oblicza średnią i odchylenie standardowe do późniejszego wykorzystania do skalowania danych.
fit_transform(X[, y]) Ta metoda dopasowuje parametry danych, a następnie je przekształca.
get_feature_names_out([input_features]) Ta metoda uzyskuje nazwy funkcji dla transformacji.
get_params([głęboko]) Metoda ta podaje parametry konkretnego estymatora.
transformacja_odwrotna(X[, kopia]) Zmniejsza rozmiar danych, aby dopasować je do ich oryginalnej formy.
częściowe_fit(X[, y, waga_próbki]) Średnia i odchylenie standardowe na X są obliczane online w celu późniejszego skalowania.
set_params(**parametry) Metodą tą określa się wartości parametrów estymatora.
transform(X[, kopia]) Ta metoda przekształca dane przy użyciu parametrów już przechowywanych w klasie.

Przykład StandardScalera

Najpierw zaimportujemy wymagane biblioteki. Aby skorzystać z funkcji StandardScaler musimy zaimportować bibliotekę Sklearn.

wybierz wielostołowy sql

Następnie załadujemy zbiór danych tęczówki. Możemy zaimportować zbiór danych IRIS z biblioteki sklearn.datasets.

Stworzymy obiekt klasy StandardScaler.

Oddzielenie cech niezależnych od docelowych.

Do zaimplementowania transformacji do zbioru danych użyjemy metody fit transform().

Składnia:

 object_ = StandardScaler() object_.fit_transform(features) 

Początkowo zbudowaliśmy instancję metody StandardScaler() zgodnie ze składnią wspomnianą powyżej. Dodatkowo standaryzujemy dane za pomocą funkcji fit_transform() wraz z dostarczonym obiektem.

stlc

Kod

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

Wyjście

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