web-dev-qa-db-fra.com

Scikit-learn: preprocessing.scale () vs preprocessing.StandardScaler ()

Je comprends que la mise à l'échelle signifie centrer la moyenne (moyenne = 0) et faire la variance unitaire (variance = 1).

Mais, quelle est la différence entre preprocessing.scale(x) et preprocessing.StandardScalar() dans scikit-learn?

16
learncode

Ils font exactement la même chose, mais:

  • preprocessing.scale(x) n'est qu'une fonction qui transforme certaines données
  • preprocessing.StandardScaler() est une classe prenant en charge l'API Transformer

J'utiliserais toujours ce dernier, même si je n'aurais pas besoin de inverse_transform Et co. pris en charge par StandardScaler().

Extrait de la docs :

L'échelle de fonction fournit un moyen rapide et facile d'effectuer cette opération sur un seul ensemble de données de type tableau

Le module de prétraitement fournit en outre une classe utilitaire StandardScaler qui implémente l'API Transformer pour calculer la moyenne et l'écart-type sur un ensemble d'apprentissage afin de pouvoir réappliquer ultérieurement la même transformation sur l'ensemble de test. Cette classe peut donc être utilisée dans les premières étapes d'un sklearn.pipeline.Pipeline

24
sascha

Ma compréhension est que l'échelle transformera les données dans la plage min-max des données, tandis que le standardcaler transformera les données dans la plage [-1, 1].

0
user9023771