web-dev-qa-db-fra.com

Différence entre le scaler standard et MinMaxScaler

Quelle est la différence entre MinMaxScaler et scaler standard.

MMS= MinMaxScaler(feature_range = (0, 1)) (utilisé dans Program1)

sc = StandardScaler() (Dans un autre programme, ils utilisaient un scaler standard et non minMaxScaler)

6
Chakra

De site ScikitLearn :

StandardScaler supprime la moyenne et met à l'échelle les données en fonction de la variance unitaire. Cependant, les valeurs aberrantes ont une influence lors du calcul de la moyenne empirique et de l'écart-type qui rétrécissent la plage des valeurs des caractéristiques, comme indiqué dans la figure de gauche ci-dessous. Notez en particulier que, comme les valeurs aberrantes de chaque caractéristique ont des magnitudes différentes, la répartition des données transformées sur chaque caractéristique est très différente: la plupart des données se situent dans la plage [-2, 4] pour la caractéristique de revenu médian transformée tandis que la même les données sont comprimées dans la plus petite plage [-0,2, 0,2] pour le nombre de ménages transformés.

StandardScaler ne peut donc pas garantir des échelles de fonctionnalités équilibrées en présence de valeurs aberrantes.

MinMaxScaler met à l'échelle l'ensemble de données de telle sorte que toutes les valeurs d'entité soient dans la plage [0, 1] comme indiqué dans le panneau de droite ci-dessous. Cependant, cette mise à l'échelle comprime tous les inliers dans la fourchette étroite [0, 0,005] pour le nombre de ménages transformés.

7
Simas Joneliunas

MinMaxScaler(feature_range = (0, 1)) transformera chaque valeur de la colonne proportionnellement dans la plage [0,1]. Utilisez-le comme premier choix de mise à l'échelle pour transformer une entité, car cela préservera la forme de l'ensemble de données (pas de distorsion).

StandardScaler() transformera chaque valeur de la colonne pour qu'elle se situe autour de la moyenne 0 et de l'écart type 1, c'est-à-dire que chaque valeur sera normalisée en soustrayant la moyenne et en divisant par l'écart type. Utilisez StandardScaler si vous savez que la distribution des données est normale.

S'il y a des valeurs aberrantes, utilisez RobustScaler(). Vous pouvez également supprimer les valeurs aberrantes et utiliser l'un des 2 scalers ci-dessus (le choix dépend de la distribution normale des données)

Remarque supplémentaire: Si le scaler est utilisé avant train_test_split, une fuite de données se produira. Utilisez le scaler après train_test_split

2
Black Raven