logo

StandardScaler in Sklearn

Quando e come utilizzare StandardScaler?

Quando le caratteristiche di un dato set di dati fluttuano in modo significativo all'interno dei loro intervalli o sono registrate in varie unità di misura, StandardScaler entra in gioco.

I dati vengono ridimensionati a una varianza di 1 dopo che la media è stata ridotta a 0 tramite StandardScaler. Ma quando si determina la media empirica dei dati e la deviazione standard, i valori anomali presenti nei dati hanno un impatto significativo che riduce lo spettro dei valori caratteristici.

esempio di sottostringa in Java

Molti algoritmi di machine learning potrebbero riscontrare problemi a causa di queste variazioni nelle funzionalità iniziali. Per gli algoritmi che calcolano la distanza, ad esempio, se una qualsiasi delle caratteristiche del set di dati ha valori con intervalli ampi o completamente diversi, quella particolare caratteristica del set di dati controllerà il calcolo della distanza.

La funzione StandardScaler di sklearn si basa sulla teoria secondo cui le variabili del set di dati i cui valori si trovano in intervalli diversi non hanno un contributo uguale ai parametri di adattamento del modello e alla funzione di addestramento e possono persino portare a distorsioni nelle previsioni fatte con quel modello.

Pertanto, prima di includere le funzionalità nel modello di machine learning, dobbiamo normalizzare i dati (μ = 0, σ = 1). La standardizzazione nell'ingegneria delle funzionalità viene comunemente utilizzata per affrontare questo potenziale problema.

Standardizzazione utilizzando Sklearn

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

Eliminando la media dalle caratteristiche e ridimensionandole alla varianza unitaria, le caratteristiche vengono standardizzate utilizzando questa funzione.

La formula per calcolare il punteggio standard di una caratteristica è z = (x - u) / s, dove u è la media della caratteristica di addestramento (o zero se with_mean = False) e s è la deviazione standard del campione (o uno se with_std = False ).

Calcolando le statistiche pertinenti sulle funzionalità nel set di training, la centratura e il ridimensionamento vengono applicati in modo indipendente a ciascuna funzionalità. Quindi, per l'utilizzo con campioni successivi utilizzando transform(), il metodo fit() memorizza la media e la deviazione standard.

parametri:

    copia (bool, predefinito = True): -Se questo parametro è impostato su True, prova a evitare le copie e ridimensiona invece i campioni sul posto. Non è necessariamente garantito che funzioni sul posto; ad esempio, la funzione potrebbe comunque restituire una copia se l'input non è sotto forma di array NumPy o matrice CSR scipy.sparse.with_mean (bool, default = True):-Se il parametro è impostato su True, ridimensiona i dati dopo averli centrati. Quando applicato a matrici sparse, questo fallisce (e solleva un'eccezione), poiché centrarle richiede la costruzione di una matrice densa che, nella maggior parte delle circostanze di utilizzo, dovrebbe essere troppo grande per adattarsi alla ram.with_std (bool, predefinito = True):-Questo parametro ridimensiona i dati di input alla varianza unitaria se è impostato su true (o possiamo dire che crea una deviazione standard unitaria).

Attributi:

    scale_ (ndarray con forma di (n_features,) o None):-I dati sono relativamente scalati per ciascuna caratteristica con media zero e varianza unitaria.mean_ (ndarray con forma di (n_features,) o None):-È il valore medio del set di dati di addestramento per ogni funzionalità. Quando l'argomento with_mean è impostato su False, questo valore è uguale a None.var_ (ndarray con forma di (n_features,) o None):-È il valore della varianza di ciascuna caratteristica nel set di dati di addestramento. Viene utilizzato per determinare la scala delle caratteristiche. Quando l'argomento with_std è impostato su False, questo valore è uguale a None.n_features_in_ (di tipo _int):-Questo attributo fornisce il numero di elementi individuati durante l'adattamento.feature_names_in_ (ndarray con forma come (n_features_in_,)):-Questo attributo rappresenta le caratteristiche identificate dai nomi durante l'adattamento. X è definito solo quando tutti i nomi delle sue caratteristiche sono di tipo stringa.n_samples_seen_ (di tipo int o ndarray avente forma come (n_features,)):-Ciò fornisce il numero di campioni che lo stimatore ha esaminato per ciascuna caratteristica.

Metodi della classe StandardScaler

fit(X[, y, peso_campione]) Questo metodo calcola la media e la deviazione standard da utilizzare successivamente per ridimensionare i dati.
fit_transform(X[, y]) Questo metodo si adatta ai parametri dei dati e quindi li trasforma.
get_feature_names_out([input_features]) Questo metodo ottiene i nomi delle funzionalità per la trasformazione.
get_params([profondo]) Questo metodo fornisce i parametri del particolare stimatore.
trasformazione_inversa(X[, copia]) Riduce la dimensione dei dati per adattarli alla forma originale.
adattamento_parziale(X[, y, peso_campione]) La media e la deviazione standard su X vengono calcolate online per il successivo ridimensionamento.
set_param(**param) Questo metodo viene utilizzato per impostare il valore dei parametri dello stimatore.
trasformazione(X[, copia]) Questo metodo trasforma i dati utilizzando parametri già archiviati nella classe.

Esempio di StandardScaler

Innanzitutto importeremo le librerie richieste. Per utilizzare la funzione StandardScaler, dobbiamo importare la libreria Sklearn.

Quindi caricheremo il set di dati dell'iride. Possiamo importare il set di dati IRIS dalla libreria sklearn.datasets.

Creeremo un oggetto della classe StandardScaler.

Separare le caratteristiche indipendenti e quelle di destinazione.

Utilizzeremo il metodo fittransform() per implementare la trasformazione nel set di dati.

Sintassi:

 object_ = StandardScaler() object_.fit_transform(features) 

Inizialmente abbiamo creato un'istanza del metodo StandardScaler() seguendo la sintassi menzionata sopra. Inoltre, standardizziamo i dati utilizzando fit_transform() insieme all'oggetto fornito.

Codice

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

Produzione

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