Je ne parviens pas à comprendre la page du StandardScaler
dans la documentation de sklearn
.
Quelqu'un peut-il m'expliquer cela en termes simples?
python
machine-learning
scikit-learn
scaling
standardized
nitinvijay23
la source
la source
each value in the dataset will have the sample mean value subtracted
-- ce n'est pas vrai. La moyenne de CHAQUE caractéristique / colonne sera soustraite des valeurs de la colonne spécifique. Cela se fait par colonne. Il n'y a passample mean value subtracted
- Voir ma réponse ciIntro: Je suppose que vous avez une matrice
X
où chaque ligne / ligne est un échantillon / observation et chaque colonne est une variable / caractéristique (c'est l'entrée attendue pour toutesklearn
fonction ML d'ailleurs -X.shape
devrait être[number_of_samples, number_of_features]
).Cœur de la méthode : L'idée principale est de normaliser / standardiser ie
μ = 0
etσ = 1
vos fonctionnalités / variables / colonnes deX
, individuellement , avant d' appliquer tout modèle d'apprentissage automatique.StandardScaler()
va normaliser les caractéristiques dire que chaque colonne de X, INDIVIDUELLEMENT , de sorte que chaque colonne / fonction / variables aurontμ = 0
etσ = 1
.PS: Je trouve la réponse la plus votée sur cette page, fausse. Je cite "chaque valeur de l'ensemble de données aura la valeur moyenne de l'échantillon soustraite" - Ce n'est ni vrai ni correct.
Voir aussi: Comment et pourquoi standardiser vos données: un tutoriel python
Exemple:
Vérifiez que la moyenne de chaque caractéristique (colonne) est 0:
Vérifiez que le std de chaque fonctionnalité (colonne) est 1:
Les maths:
MISE À JOUR 08/2019 : Concernant les paramètres d'entrée
with_mean
etwith_std
àFalse
/True
, j'ai fourni une réponse ici: Différence StandardScaler entre "with_std = False or True" et "with_mean = False or True"la source
[1.15, 1.15]
quand je calcule comme Pandas df:pd.DataFrame(scaled_data).std(0)
?pd.DataFrame(scaled_data)[0]
j'obtiens une série avecName: 0, dtype: float64
et des valeurs[-1.0, 1.0, -1.0, 1.0]
. Désolé pour le formatageStandardScaler
, cela accélère- t-il l'algorithme d'apprentissage automatique, aide -t-il à prendre des décisions plus précises, ou autre chose?Comment le calculer:
Vous pouvez lire plus ici:
la source
StandardScaler effectue la tâche de normalisation . En général, un ensemble de données contient des variables d'échelle différente. Par exemple, un ensemble de données Employé contiendra une colonne AGE avec des valeurs sur l'échelle 20-70 et une colonne SALAIRE avec des valeurs sur l'échelle 10000-80000 .
Comme ces deux colonnes ont des échelles différentes, elles sont standardisées pour avoir une échelle commune lors de la création du modèle d'apprentissage automatique.
la source
Ceci est utile lorsque vous souhaitez comparer des données correspondant à différentes unités. Dans ce cas, vous souhaitez supprimer les unités. Pour faire cela de manière cohérente de toutes les données, vous transformez les données de manière à ce que la variance soit unitaire et que la moyenne de la série soit égale à 0.
la source
Les réponses ci-dessus sont excellentes, mais j'avais besoin d'un exemple simple pour atténuer certaines préoccupations que j'ai eues dans le passé. Je voulais m'assurer qu'il traitait effectivement chaque colonne séparément. Je suis maintenant rassuré et ne trouve pas quel exemple m'avait inquiété. Toutes les colonnes SONT mises à l'échelle séparément comme décrit par celles ci-dessus.
CODE
PRODUCTION
la source
Voici un exemple de travail simple pour expliquer le fonctionnement du calcul de la normalisation. La partie théorique est déjà bien expliquée dans d'autres réponses.
Calcul
Comme vous pouvez le voir dans la sortie, la moyenne est [6. , 2,5] et l'écart type est [1,41421356, 0,8660254]
Les données sont (0,1) la position est 2 Standardisation = (2 - 2.5) /0.8660254 = -0.57735027
Les données en position (1,0) sont 4 Standardisation = (4-6) /1,41421356 = -1,414
Résultat après normalisation
Vérifier l'écart moyen et standard après la normalisation
Remarque: -2,77555756e-17 est très proche de 0.
Références
Comparez l'effet de différents scalers sur les données avec des valeurs aberrantes
Quelle est la différence entre la normalisation et la normalisation?
La moyenne des données mises à l'échelle avec sklearn StandardScaler n'est pas nulle
la source
Après application
StandardScaler()
, chaque colonne de X aura une moyenne de 0 et un écart type de 1.Les formules sont listées par d'autres sur cette page.
Raison d'être: certains algorithmes nécessitent que les données ressemblent à ceci (voir la documentation sklearn ).
la source