logo

StandardScaler in Sklearn

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:

    kopiëren (bool, standaard = True): -Als deze parameter is ingesteld op True, probeer dan kopieën te vermijden en in plaats daarvan de monsters op hun plaats te schalen. Het is niet noodzakelijkerwijs gegarandeerd dat dit op zijn plaats functioneert; De functie kan bijvoorbeeld nog steeds een kopie retourneren als de invoer niet de vorm heeft van een NumPy-array of scipy.sparse CSR-matrix.with_mean (bool, standaard = True): -Als de parameter is ingesteld op True, schaalt u de gegevens nadat u deze hebt gecentreerd. Wanneer toegepast op dunne matrices mislukt dit (en veroorzaakt een uitzondering), omdat het centreren ervan de constructie van een dichte matrix noodzakelijk maakt die, in de meeste gebruiksomstandigheden, naar verwachting te groot zal zijn om in de ram te passen.with_std (bool, standaard = True): -Deze parameter schaalt de invoergegevens naar de eenheidsvariantie als deze is ingesteld op waar (of we kunnen zeggen dat deze de standaardafwijking van de eenheid maakt).

Kenmerken:

    scale_ (ndarray heeft de vorm (n_features,) of Geen): -De gegevens zijn voor elk kenmerk relatief geschaald, waarbij het gemiddelde en de eenheidsvariantie nul zijn.mean_ (ndarray heeft de vorm (n_features,) of Geen): -Het is de gemiddelde waarde van de trainingsgegevensset voor elke functie. Wanneer het argument with_mean is ingesteld op False, is deze waarde gelijk aan Geen.var_ (ndarray heeft de vorm (n_features,) of Geen): -Het is de waarde van de variantie van elk kenmerk in de trainingsgegevensset. Het wordt gebruikt om de schaal van de functies te bepalen. Wanneer het argument with_std is ingesteld op False, is deze waarde gelijk aan Geen.n_features_in_ (van _int-type): -Dit attribuut geeft het aantal kenmerken aan dat bij het passen wordt opgemerkt.feature_names_in_ (ndarray heeft de vorm als (n_features_in_,)): -Dit attribuut bestaat uit de kenmerken die tijdens het passen met namen worden geïdentificeerd. X wordt alleen gedefinieerd als alle featurenamen van het datatype string zijn.n_samples_seen_ (van int-type of een ndarray met de vorm (n_features,)): -Dit geeft het aantal steekproeven weer dat de schatter voor elk kenmerk heeft onderzocht.

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]