PC & Mobile

Comment, quand et pourquoi devriez-vous normaliser / normaliser / redimensionner vos données?

Comment, quand et pourquoi devriez-vous normaliser / normaliser / redimensionner vos données?


- Comment, quand et pourquoi devriez-vous normaliser / normaliser / redimensionner vos données?

Avant de plonger dans ce sujet, commençons par quelques définitions.

“Remise à l'échelle” un vecteur signifie additionner ou soustraire une constante, puis multiplier ou diviser par une constante, comme vous le feriez pour changer les unités de mesure des données, par exemple, pour convertir une température de Celsius en Fahrenheit.

«Normaliser» un vecteur signifie le plus souvent diviser par une norme du vecteur. Cela fait aussi souvent référence à la mise à l'échelle par le minimum et l'étendue du vecteur, pour faire en sorte que tous les éléments soient compris entre 0 et 1, amenant ainsi toutes les valeurs des colonnes numériques du jeu de données à une échelle commune.

"Standardisation" un vecteur signifie le plus souvent soustraire une mesure d'emplacement et le diviser par une mesure d'échelle. Par exemple, si le vecteur contient des valeurs aléatoires avec une distribution gaussienne, vous pouvez soustraire la moyenne et diviser par l'écart type afin d'obtenir une variable aléatoire «normale normale» avec une moyenne 0 et un écart type 1.

Après avoir lu ce post, vous saurez:

  • Pourquoi devriez-vous normaliser / normaliser / mettre à l'échelle vos données
  • Comment standardiser vos attributs numériques pour avoir une variance de 0 moyenne et unité en utilisant scalaire standard
  • Comment normaliser vos attributs numériques entre 0 et 1 en utilisant scalaire min-max
  • Comment normaliser en utilisant un scalaire robuste
  • Quand choisir la normalisation ou la normalisation

Commençons.

Pourquoi devriez-vous normaliser / normaliser les variables:

Standardisation:

Il est important de normaliser les caractéristiques autour du centre et de 0 avec un écart type de 1 lorsque nous comparons des mesures ayant différentes unités. Les variables mesurées à différentes échelles ne contribuent pas également à l'analyse et risquent de créer un baiser.

Par exemple, une variable comprise entre 0 et 1 000 l'emportera sur une variable comprise entre 0 et 1. Si vous utilisez ces variables sans normalisation, vous obtiendrez la variable dont le poids de plage le plus élevé est 1000 dans l'analyse. La transformation des données à des échelles comparables peut éviter ce problème. Les procédures typiques de normalisation des données égalisent la plage et / ou la variabilité des données.

Normalisation:

De même, l'objectif de la normalisation est de changer les valeurs des colonnes numériques du jeu de données à une échelle commune, sans distorsion des différences dans les plages de valeurs. Pour l'apprentissage automatique, chaque jeu de données ne nécessite pas de normalisation. Il n'est requis que lorsque les fonctionnalités ont des plages différentes.

Par exemple, considérons un ensemble de données contenant deux caractéristiques, l'âge et le revenu (x2). Où l'âge varie de 0 à 100 ans, tandis que le revenu varie de 0 à 100 000 et plus. Le revenu est environ 1 000 fois supérieur à l'âge. Donc, ces deux caractéristiques sont dans des gammes très différentes. Lorsque nous effectuons une analyse plus poussée, comme une régression linéaire multivariée, par exemple, le revenu attribué influencera davantage le résultat intrinsèquement du fait de sa valeur plus grande. Mais cela ne signifie pas nécessairement qu’il est plus important en tant que prédicteur. Nous normalisons donc les données pour ramener toutes les variables à la même plage.

Quand devriez-vous utiliser la normalisation et la normalisation:

Normalisation est une bonne technique à utiliser lorsque vous ne connaissez pas la distribution de vos données ou lorsque vous savez que la distribution n’est pas gaussienne (courbe en cloche). La normalisation est utile lorsque vos données ont des échelles variables et que l'algorithme que vous utilisez ne suppose pas la distribution de vos données, telle que les k-voisins les plus proches et les réseaux de neurones artificiels.

Standardisation suppose que vos données ont une distribution gaussienne (courbe en cloche). Cela n'est pas forcément vrai, mais la technique est plus efficace si la distribution de vos attributs est gaussienne. La normalisation est utile lorsque vos données ont des échelles variables et que l'algorithme que vous utilisez fait des hypothèses sur les données ayant une distribution gaussienne, telles que la régression linéaire, la régression logistique et l'analyse discriminante linéaire.

Jeu de données:

J'ai utilisé les données de prêt du club de crédit de Kaggle pour illustrer les exemples présentés dans cet article.

Importer des bibliothèques:

importer des pandas en tant que pd
importer numpy en tant que np
importer seaborn as sns
importer matplotlib.pyplot en tant que plt

Importer le jeu de données:

Importons trois colonnes - Montant du prêt, int_rate et versement et les 30000 premières lignes du jeu de données (pour réduire le temps de calcul)

cols = ['loan_amnt', 'int_rate', 'installment']
data = pd.read_csv ('loan.csv', nrows = 30000, usecols = cols)

Si vous importez l'intégralité des données, des valeurs seront manquantes dans certaines colonnes. Vous pouvez simplement supprimer les lignes avec les valeurs manquantes en utilisant la méthode pandas drop na.

Analyse de base:

Analysons maintenant les valeurs statistiques de base de notre ensemble de données.

data.describe ()

Les différentes variables présentent différentes plages de valeurs, donc différentes magnitudes. Non seulement les valeurs minimum et maximum sont différentes, mais elles s'étendent également sur des plages de largeurs différentes.

Normalisation (scalaire standard):

Comme nous l'avons vu précédemment, standardiser (ou normaliser le score Z) signifie centrer la variable sur zéro et standardiser la variance sur 1. La procédure consiste à soustraire la moyenne de chaque observation et à la diviser ensuite par l'écart type:

Le résultat de la normalisation est que les fonctionnalités seront redimensionnées afin qu’elles aient les propriétés d’une distribution normale standard avec

μ = 0 et σ = 1

où μ est la moyenne (moyenne) et σ est l'écart type par rapport à la moyenne.

CODE:

StandardScaler de sci-kit-learn supprime la moyenne et adapte les données à la variance unitaire. Nous pouvons importer la méthode StandardScalar de scikit learn et l’appliquer à notre jeu de données.

depuis sklearn.preprocessing import StandardScaler
scaler = StandardScaler ()
data_scaled = scaler.fit_transform (data)

Maintenant, vérifions les valeurs de déviation moyenne et standard

print (data_scaled.mean (axis = 0))
print (data_scaled.std (axis = 0))
Comment quand et pourquoi devriez vous normaliser normaliser redimensionner vos données - Comment, quand et pourquoi devriez-vous normaliser / normaliser / redimensionner vos données?

Comme on pouvait s'y attendre, la moyenne de chaque variable est maintenant autour de zéro et l'écart type est défini sur 1. Ainsi, toutes les valeurs de variable se situent dans la même plage.

print ('Valeurs minimales (montant du prêt, taux et versement échelonné):', data_scaled.min (axis = 0))
print ('Valeurs maximales (montant du prêt, taux et versement échelonné):', data_scaled.max (axis = 0))
1558070533 486 Comment quand et pourquoi devriez vous normaliser normaliser redimensionner vos données - Comment, quand et pourquoi devriez-vous normaliser / normaliser / redimensionner vos données?

Cependant, les valeurs minimales et maximales varient en fonction de l'étendue de la variable, et sont fortement influencées par la présence de valeurs aberrantes.

Normalisation (scalaire min-max):

Dans cette approche, les données sont mises à l'échelle sur une plage fixe, généralement comprise entre 0 et 1.
Contrairement à la normalisation, le coût de cette plage bornée est que nous obtiendrons des écarts-types plus faibles, ce qui peut supprimer l’effet des valeurs aberrantes. Ainsi, MinMax Scalar est sensible aux valeurs aberrantes.

Une mise à l'échelle Min-Max est généralement effectuée via l'équation suivante:

CODE:

Importons MinMaxScalar de Scikit learn et appliquons-le à notre jeu de données.

depuis sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler ()
data_scaled = scaler.fit_transform (data)

Maintenant, vérifions les valeurs de la moyenne et de l’écart type.

print ('signifie (montant du prêt, taux et versement échelonné):', data_scaled.mean (axis = 0))
print ('std (montant du prêt, taux et versement échelonné):', data_scaled.std (axis = 0))
1558070533 9 Comment quand et pourquoi devriez vous normaliser normaliser redimensionner vos données - Comment, quand et pourquoi devriez-vous normaliser / normaliser / redimensionner vos données?

Après MinMaxScaling, les distributions ne sont pas centrées à zéro et l'écart-type n'est pas 1.

print ('Min (Montant du prêt, taux et versement échelonné):', data_scaled.min (axis = 0))
print ('Max (montant du prêt, taux et versement échelonné):', data_scaled.max (axis = 0))
1558070534 958 Comment quand et pourquoi devriez vous normaliser normaliser redimensionner vos données - Comment, quand et pourquoi devriez-vous normaliser / normaliser / redimensionner vos données?

Mais les valeurs minimales et maximales sont normalisées pour toutes les variables, ce qui est différent de ce qui se produit avec la normalisation.

Scalaire robuste (passage à la médiane et aux quantiles):

La mise à l'échelle à l'aide de la médiane et des quantiles consiste à soustraire la médiane à toutes les observations, puis à la diviser par la différence interquartile. Il met à l'échelle les fonctionnalités à l'aide de statistiques robustes aux valeurs extrêmes.

La différence interquartile est la différence entre le 75ème et le 25ème quantile:

IQR = 75ème quantile - 25ème quantile

L'équation pour calculer les valeurs mises à l'échelle:

X_scaled = (X - X.median) / IQR

CODE:

Tout d'abord, importez RobustScalar à partir de Scikit learn.

depuis sklearn.preprocessing import RobustScaler
scaler = RobustScaler ()
data_scaled = scaler.fit_transform (data)

Maintenant, vérifiez les valeurs de la moyenne et de l'écart type.

print ('signifie (montant du prêt, taux et versement échelonné):', data_scaled.mean (axis = 0))
print ('std (montant du prêt, taux et versement échelonné):', data_scaled.std (axis = 0))
1558070534 373 Comment quand et pourquoi devriez vous normaliser normaliser redimensionner vos données - Comment, quand et pourquoi devriez-vous normaliser / normaliser / redimensionner vos données?

Comme vous pouvez le constater, les distributions ne sont pas centrées sur zéro et l’écart type n’est pas 1.

print ('Min (Montant du prêt, taux et versement):', data_scaled.min (axis = 0))
print ('Max (montant du prêt, taux et versement échelonné):', data_scaled.max (axis = 0))
1558070534 977 Comment quand et pourquoi devriez vous normaliser normaliser redimensionner vos données - Comment, quand et pourquoi devriez-vous normaliser / normaliser / redimensionner vos données?

Les valeurs minimale et maximale ne sont pas non plus définies sur certaines limites supérieure et inférieure, comme dans MinMaxScaler.

J'espère que vous avez trouvé cet article utile. Heureux d'apprendre!

Références:

  1. https://www.udemy.com/feature-engineering-for-machine-learning/
  2. https://www.geeksforgeeks.org/python-how-and-where-to-apply-feature-scaling/
Show More

SupportIvy

SupportIvy.com : Un lieu pour partager le savoir et mieux comprendre le monde. Meilleure plate-forme de support gratuit pour vous, Documentation &Tutoriels par les experts.

Related Articles

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Close
Close