logo

StandardScaler dans Sklearn

Quand et comment utiliser StandardScaler ?

Lorsque les caractéristiques de l'ensemble de données donné fluctuent considérablement dans leurs plages ou sont enregistrées dans diverses unités de mesure, StandardScaler entre en scène.

Les données sont mises à l'échelle avec une variance de 1 après que la moyenne soit réduite à 0 via StandardScaler. Mais lors de la détermination de la moyenne empirique des données et de l’écart type, les valeurs aberrantes présentes dans les données ont un impact significatif qui réduit le spectre des valeurs caractéristiques.

interface en java

De nombreux algorithmes de machine learning peuvent rencontrer des problèmes dus à ces variations dans les fonctionnalités de départ. Pour les algorithmes qui calculent la distance, par exemple, si l'une des caractéristiques de l'ensemble de données a des valeurs ayant des plages larges ou complètement différentes, cette caractéristique particulière de l'ensemble de données contrôlera le calcul de la distance.

La fonction StandardScaler de sklearn est basée sur la théorie selon laquelle les variables de l'ensemble de données dont les valeurs se situent dans des plages différentes n'ont pas une contribution égale aux paramètres d'ajustement et à la fonction d'entraînement du modèle et peuvent même conduire à un biais dans les prédictions faites avec ce modèle.

Par conséquent, avant d'inclure les fonctionnalités dans le modèle d'apprentissage automatique, nous devons normaliser les données (µ = 0, σ = 1). La normalisation dans l’ingénierie des fonctionnalités est couramment utilisée pour résoudre ce problème potentiel.

Standardiser avec Sklearn

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

En éliminant la moyenne des caractéristiques et en les mettant à l'échelle en fonction de la variance unitaire, les caractéristiques sont standardisées à l'aide de cette fonction.

La formule pour calculer le score standard d'une fonctionnalité est z = (x - u) / s, où u est la moyenne de la fonctionnalité d'entraînement (ou zéro si with_mean = False) et s est l'écart type de l'échantillon (ou un si with_std = False ).

c'est

En calculant les statistiques pertinentes sur les fonctionnalités de l'ensemble d'apprentissage, le centrage et la mise à l'échelle sont appliqués indépendamment à chaque fonctionnalité. Ensuite, pour une utilisation avec des échantillons ultérieurs à l'aide de transform(), la méthode fit() stocke la moyenne et l'écart type.

Paramètres:

    copier (bool, par défaut = True) : -Si ce paramètre est défini sur True, essayez d’éviter les copies et mettez plutôt à l’échelle les échantillons sur place. Il n'est pas nécessairement garanti que cela fonctionne en place ; par exemple, la fonction peut toujours renvoyer une copie si l'entrée ne se présente pas sous la forme d'un tableau NumPy ou d'une matrice CSR scipy.sparse.with_mean (bool, par défaut = True) : -Si le paramètre est défini sur True, mettez à l'échelle les données après les avoir centrées. Lorsqu'elle est appliquée à des matrices clairsemées, cela échoue (et soulève une exception), car leur centrage nécessite la construction d'une matrice dense qui, dans la plupart des cas d'utilisation, devrait être trop énorme pour tenir dans le bélier.with_std (bool, par défaut = True) : -Ce paramètre met à l'échelle les données d'entrée en fonction de la variance unitaire s'il est défini sur vrai (ou nous pouvons dire qu'il constitue l'écart type de l'unité).

Les attributs:

    scale_ (ndarray ayant la forme de (n_features,) ou Aucun) : -Les données sont relativement mises à l'échelle pour chaque entité avec une moyenne nulle et une variance unitaire.Mean_ (ndarray ayant la forme de (n_features,) ou Aucun) : -Il s'agit de la valeur moyenne de l'ensemble de données d'entraînement pour chaque fonctionnalité. Lorsque l'argument with_mean est défini sur False, cette valeur est égale à None.var_ (ndarray ayant la forme de (n_features,) ou Aucun) : -Il s'agit de la valeur de la variance de chaque entité dans l'ensemble de données d'entraînement. Il est utilisé pour déterminer l’échelle des fonctionnalités. Lorsque l'argument with_std est défini sur False, cette valeur est égale à None.n_features_in_ (de type _int) : -Cet attribut donne le nombre d'entités repérées lors de l'ajustement.feature_names_in_ (ndarray ayant la forme (n_features_in_,)) : -Cet attribut correspond aux fonctionnalités identifiées par des noms lors de l'ajustement. X n'est défini que lorsque tous ses noms de fonctionnalités sont de type chaîne de données.n_samples_seen_ (de type int ou un ndarray ayant la forme de (n_features,)) : -Cela donne le nombre d'échantillons que l'estimateur a examiné pour chaque caractéristique.

Méthodes de la classe StandardScaler

ajustement(X[, y, sample_weight]) Cette méthode calcule la moyenne et l’écart type à utiliser ultérieurement pour mettre à l’échelle les données.
fit_transform(X[,y]) Cette méthode ajuste les paramètres des données puis les transforme.
get_feature_names_out([input_features]) Cette méthode obtient les noms de fonctionnalités pour la transformation.
get_params([profond]) Cette méthode donne les paramètres de l'estimateur particulier.
transformation_inverse(X[, copie]) Il réduit la taille des données pour qu'elles correspondent à leur forme originale.
partial_fit(X[, y, sample_weight]) La moyenne et l'écart type sur X sont calculés en ligne pour une mise à l'échelle ultérieure.
set_params(**params) Cette méthode est utilisée pour définir la valeur des paramètres de l'estimateur.
transformer(X[, copier]) Cette méthode transforme les données en utilisant des paramètres déjà stockés dans la classe.

Exemple de StandardScaler

Tout d’abord, nous importerons les bibliothèques requises. Pour utiliser la fonction StandardScaler, nous devons importer la bibliothèque Sklearn.

tri par sélection en java

Ensuite, nous chargerons l'ensemble de données iris. Nous pouvons importer l'ensemble de données IRIS depuis la bibliothèque sklearn.datasets.

Nous allons créer un objet de la classe StandardScaler.

Séparation des fonctionnalités indépendantes et cibles.

Nous utiliserons la méthode fit transform() pour implémenter la transformation dans l'ensemble de données.

Syntaxe:

 object_ = StandardScaler() object_.fit_transform(features) 

Nous avons initialement construit une instance de la méthode StandardScaler() en suivant la syntaxe mentionnée ci-dessus. De plus, nous standardisons les données en utilisant fit_transform() avec l'objet fourni.

python nouvelle ligne

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

Sortir

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