web-dev-qa-db-ja.com

sklearn.preprocessingのstandardscalerとNormalizerの違い

Sklearn.preprocessingモジュールのstandardscalerとnormalizerの違いは何ですか?両方が同じことをしないのですか?つまり、偏差を使用して平均とスケールを削除しますか?

21
rb1992

Normalizer ドキュメントから:

少なくとも1つの非ゼロ成分を持つ各サンプル(つまり、データ行列の各行)は、そのノルム(l1またはl2)が1になるように、他のサンプルとは無関係に再スケーリングされます。

そして StandardScaler

平均を削除して単位分散にスケーリングすることにより、機能を標準化する

言い換えると、ノーマライザーは行方向とStandardScaler列方向に作用します。ノーマライザは、偏差による平均とスケールを削除しませんが、行全体を単位ノルムにスケーリングします。

28
joc

この 視覚化記事 は、Benによるアイデアの説明に大いに役立ちます。

StandardScalerは、データが各機能内に正規分布していることを前提としています。 「平均を削除して単位分散にスケーリングする」ことにより、元のスケールに関係なく同じ「スケール」を持つようになりました。

7
vincentlcy

StandardScaler()は、平均を削除して単位分散にスケーリングすることにより、特徴(個人データの特徴(身長、体重など))を標準化します。

(ユニット分散:ユニット分散とは、サンプルサイズが無限大に向かうにつれて、サンプルの標準偏差と分散が1に向かう傾向があることを意味します。)

Normalizer()は、各サンプルを再スケーリングします。たとえば、各会社の株価を互いに独立して再スケーリングします。

一部の株は他の株よりも高価です。これを説明するために、正規化します。ノーマライザーは、各企業の株価を相対的な規模に個別に変換します。

2
Arjjun

StandardScalerは、平均を削除して単位分散にスケーリングすることで機能を標準化し、Normalizerは各サンプルを再スケーリングします。

1
CezarySzulc

this の記事を表示する@vincentlcyによる優れた提案に加えて、Scikit-Learnのドキュメントに例があります here 。重要な違いは、Normalizer()が列ではなく各サンプル(行)に適用されることです。これは、各列の類似タイプのデータの仮定に適合する特定のデータセットでのみ機能する場合があります。

0
Adam Erickson