web-dev-qa-db-ja.com

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

スケーリングとは、平均を中央に揃え(平均= 0)、単位分散(分散= 1)にすることを理解しています。

しかし、scikit-learnのpreprocessing.scale(x)preprocessing.StandardScalar()の違いは何ですか?

16
learncode

それらはまったく同じことをしていますが、

  • preprocessing.scale(x)は、一部のデータを変換する単なる関数です
  • preprocessing.StandardScaler()は、Transformer APIをサポートするクラスです

_inverse_transform_およびcoが必要ない場合でも、私は常に後者を使用します。 StandardScaler()でサポートされています。

docs からの抜粋:

関数スケールは、単一の配列のようなデータセットに対してこの操作を実行するための迅速かつ簡単な方法を提供します

前処理モジュールはさらに、Transformer APIを実装するユーティリティクラスStandardScalerを提供し、トレーニングセットの平均と標準偏差を計算して、後でテストセットに同じ変換を再適用できるようにします。したがって、このクラスはsklearn.pipeline.Pipelineの初期段階での使用に適しています。

24
sascha

私の理解では、スケールはデータの最小-最大範囲のデータを変換し、スタンダードスケーラーは[-1、1]の範囲のデータを変換します。

0
user9023771