Wanneer en hoe StandardScaler gebruiken?
Wanneer de kenmerken van de gegeven dataset aanzienlijk binnen hun bereik fluctueren of in verschillende meeteenheden worden vastgelegd, komt StandardScaler in beeld.
De gegevens worden geschaald naar een variantie van 1 nadat het gemiddelde via StandardScaler is teruggebracht naar 0. Maar bij het bepalen van het empirische gemiddelde van de gegevens en de standaarddeviatie hebben uitschieters in de gegevens een aanzienlijke impact die het spectrum van karakteristieke waarden verkleint.
Veel machine learning-algoritmen kunnen problemen ondervinden als gevolg van deze variaties in de startfuncties. Als bijvoorbeeld bij algoritmen die afstanden berekenen een van de kenmerken van de dataset waarden heeft met een groot of totaal verschillend bereik, zal dat specifieke kenmerk van de dataset de berekening van de afstand besturen.
De StandardScaler-functie van sklearn is gebaseerd op de theorie dat de variabelen van de dataset waarvan de waarden in verschillende bereiken liggen, geen gelijke bijdrage leveren aan de fitparameters en trainingsfunctie van het model en zelfs kunnen leiden tot vertekening in de voorspellingen die met dat model worden gedaan.
Voordat we de functies in het machine learning-model opnemen, moeten we daarom de gegevens normaliseren (μ = 0, σ = 1). Standaardisatie in feature-engineering wordt vaak toegepast om dit potentiële probleem aan te pakken.
Standaardiseren met behulp van Sklearn
sklearn.preprocessing.StandardScaler(*, copy = True, with_mean = True, with_std = True)
Door het gemiddelde van de kenmerken te elimineren en deze op te schalen naar eenheidsvariantie, worden kenmerken gestandaardiseerd met behulp van deze functie.
De formule voor het berekenen van de standaardscore van een kenmerk is z = (x - u) / s, waarbij u het gemiddelde van het trainingskenmerk is (of nul als with_mean = False) en s de standaarddeviatie van de steekproef is (of één als with_std = False ).
Door de relevante statistieken over de kenmerken in de trainingsset te berekenen, worden centrering en schaling onafhankelijk op elk kenmerk toegepast. Voor gebruik met latere voorbeelden die transform() gebruiken, slaat de fit()-methode vervolgens het gemiddelde en de standaarddeviatie op.
Parameters:
Kenmerken:
Methoden van de StandardScaler-klasse
fit(X[, y, monstergewicht]) | Deze methode berekent het gemiddelde en de standaarddeviatie om later te gebruiken voor het schalen van de gegevens. |
fit_transform(X[, y]) | Deze methode past de parameters van de gegevens aan en transformeert deze vervolgens. |
get_feature_names_out([input_features]) | Met deze methode worden de functienamen voor de transformatie verkregen. |
get_params([diep]) | Deze methode geeft de parameters van de specifieke schatter. |
inverse_transform(X[, kopiëren]) | Het verkleint de grootte van de gegevens zodat deze overeenkomt met de oorspronkelijke vorm. |
gedeeltelijke_fit(X[, y, monster_gewicht]) | Het gemiddelde en de standaardafwijking op X worden online berekend voor latere schaling. |
set_params(**params) | Deze methode wordt gebruikt om de waarde van de parameters van de schatter in te stellen. |
transformeren(X[, kopiëren]) | Deze methode transformeert de gegevens door gebruik te maken van parameters die al in de klasse zijn opgeslagen. |
Voorbeeld van StandardScaler
Eerst importeren we de benodigde bibliotheken. Om de StandardScaler-functie te gebruiken, moeten we de Sklearn-bibliotheek importeren.
Vervolgens laden we de irisdataset. We kunnen de IRIS-gegevensset importeren uit de sklearn.datasets-bibliotheek.
We zullen een object van de StandardScaler-klasse maken.
Het scheiden van de onafhankelijke en doelfuncties.
We zullen de fit transform() -methode gebruiken om de transformatie in de dataset te implementeren.
Syntaxis:
object_ = StandardScaler() object_.fit_transform(features)
We hebben in eerste instantie een exemplaar van de StandardScaler()-methode gebouwd volgens de hierboven genoemde syntaxis. Bovendien standaardiseren we de gegevens door fit_transform() samen met het opgegeven object te gebruiken.
Code
# 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_)
Uitvoer
[[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]