Hvornår og hvordan bruges StandardScaler?
Når funktionerne i det givne datasæt svinger betydeligt inden for deres intervaller eller er optaget i forskellige måleenheder, kommer StandardScaler ind i billedet.
Dataene skaleres til en varians på 1 efter middelværdien er reduceret til 0 via StandardScaler. Men når man bestemmer det empiriske gennemsnit af dataene og standardafvigelsen, har outliers til stede i data en betydelig indvirkning, der reducerer spektret af karakteristiske værdier.
Mange maskinlæringsalgoritmer kan støde på problemer på grund af disse variationer i startfunktionerne. For algoritmer, der beregner afstand, for eksempel, hvis nogen af datasættets funktioner har værdier med store eller helt forskellige intervaller, vil den særlige funktion af datasættet styre afstandsberegningen.
StandardScaler-funktionen i sklearn er baseret på teorien om, at datasættets variabler, hvis værdier ligger i forskellige intervaller, ikke har et ligeligt bidrag til modellens tilpasningsparametre og træningsfunktion og kan endda føre til skævhed i forudsigelserne lavet med denne model.
numpy meshgrid
Derfor, før vi inkluderer funktionerne i maskinlæringsmodellen, skal vi normalisere dataene (µ = 0, σ = 1). Standardisering i feature engineering er almindeligt anvendt til at løse dette potentielle problem.
Standardisering ved hjælp af Sklearn
sklearn.preprocessing.StandardScaler(*, copy = True, with_mean = True, with_std = True)
Ved at eliminere middelværdien fra funktionerne og skalere dem til enhedsvarians, standardiseres funktionerne ved hjælp af denne funktion.
Formlen til beregning af et elements standardscore er z = (x - u) / s, hvor u er træningselementets middelværdi (eller nul, hvis with_mean = False), og s er standardafvigelsen for prøven (eller en, hvis with_std = False ).
Ved at beregne den relevante statistik over funktionerne i træningssættet, anvendes centrering og skalering uafhængigt af hver funktion. Derefter, til brug med senere prøver ved hjælp af transform(), gemmer fit()-metoden middelværdien og standardafvigelsen.
Parametre:
Egenskaber:
Metoder i StandardScaler-klassen
fit(X[, y, sample_weight]) | Denne metode beregner middelværdien og standardafvigelsen til senere brug til skalering af dataene. |
fit_transform(X[, y]) | Denne metode passer til parametrene for dataene og transformerer dem derefter. |
get_feature_names_out([input_features]) | Denne metode henter funktionsnavnene til transformationen. |
get_params([dyb]) | Denne metode giver parametrene for den bestemte estimator. |
omvendt_transform(X[, kopi]) | Det reducerer datastørrelsen, så den matcher dens oprindelige form. |
partial_fit(X[, y, sample_weight]) | Middelværdien og standardafvigelsen på X beregnes online til senere skalering. |
set_params(**params) | Denne metode bruges til at indstille værdien af estimatorens parametre. |
transform(X[, kopi]) | Denne metode transformerer dataene ved at bruge parametre, der allerede er gemt i klassen. |
Eksempel på StandardScaler
For det første importerer vi de nødvendige biblioteker. For at bruge StandardScaler-funktionen skal vi importere Sklearn-biblioteket.
Derefter indlæser vi iris-datasættet. Vi kan importere IRIS-datasættet fra sklearn.datasets-biblioteket.
Vi vil oprette et objekt af StandardScaler-klassen.
Adskillelse af de uafhængige og målfunktioner.
Vi vil bruge metoden fit transform() til at implementere transformationen til datasættet.
Syntaks:
object_ = StandardScaler() object_.fit_transform(features)
Vi byggede oprindeligt en instans af StandardScaler()-metoden efter syntaksen nævnt ovenfor. Derudover standardiserer vi dataene ved at bruge fit_transform() sammen med det angivne objekt.
Kode
# 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_)
Produktion
[[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]