Python-機能スケーリングを適用する方法と場所は?
これは、データの独立変数または特徴に適用されるデータ前処理のステップです。基本的に、特定の範囲内のデータを正規化するのに役立ちます。
スケーリングする理由
ほとんどの場合、データセットには、大きさ、単位、範囲が大きく異なる特徴が含まれます。ただし、ほとんどの機械学習アルゴリズムは、計算に2つのデータポイント間のユークリッド距離を使用するため、これは問題です。
そのままにしておくと、これらのアルゴリズムは、単位を無視する特徴の大きさのみを取り入れます。結果は、5kgと5000gmsの異なるユニット間で大きく異なります。
マグニチュードの高いフィーチャは、マグニチュードの小さいフィーチャよりも距離計算ではるかに重要になります。
この影響を抑えるには、すべての機能を同じレベルにする必要があります。これはスケーリングによって実現できます。
機能をスケーリングする方法は?
- 標準化 −標準化により、値がZスコアに置き換えられます。
- $$ x ^ {\ prime} =\ frac {x \:-\:\ bar {x}} {\ sigma} $$これにより、平均μ=0および標準偏差σ=1で特徴が再分布されます。 sklearn.preprocessing.scaleは、Pythonでの標準化の実装に役立ちます。
- 平均正規化 −
- $$ x ^ {\ prime} =\ frac {x \:-\:mean(x)} {\ max(x)\:-\:\ min(x)} $$
この分布の値は、-1から1の間です。 μ=0で。 標準化 および平均正規化 主成分分析(PCA)のようなゼロ中心のデータを想定するアルゴリズムに使用できます 。
- 最小-最大スケーリング
- $$ x ^ {\ prime} =\ frac {x \:-\:\ min(x)} {\ max(x)\:-\:\ min(x)} $$
このスケーリングにより、値は0〜1になります。
- 単位ベクトル −
- $$ x ^ {\ prime} =\ frac {x} {\ lVert \:x \:\ rVert} $$
スケーリングは、特徴ベクトル全体が単位長であると見なして行われます。最小-最大スケーリング および単位ベクトル テクニックは範囲[0,1]の値を生成します。ハード境界のある機能を扱う場合、これは非常に便利です。たとえば、画像データを処理する場合、色の範囲は0〜255のみです。
いつスケーリングしますか?
ここで従う経験則は、距離を計算するか、正規性を仮定して、特徴をスケーリングするアルゴリズムです。
機能のスケーリングが重要なアルゴリズムの例は次のとおりです-
-
ユークリッド距離の測定値を持つk最近傍法は大きさに敏感であるため、すべての特徴が等しく計量されるようにスケーリングする必要があります。
-
主成分分析(PCA)を実行している間、スケーリングは重要です。 PCAは最大の分散を持つ特徴を取得しようとしますが、分散が大きい特徴の場合は分散が大きくなります。これにより、PCAが高マグニチュードの特徴に偏ります。
-
スケーリングすることで最急降下法を高速化できます。これは、θが狭い範囲では急速に下降し、大きな範囲ではゆっくりと下降するため、変数が非常に不均一な場合、最適値まで非効率的に振動するためです。
-
ツリーベースのモデルは距離ベースのモデルではなく、さまざまな範囲の機能を処理できます。したがって、ツリーのモデリング中にスケーリングは必要ありません。
-
線形判別分析(LDA)、ナイーブベイズなどのアルゴリズムは、これを処理するように設計されており、それに応じて機能に重みを付けます。これらのアルゴリズムで機能のスケーリングを実行しても、あまり効果がない場合があります。
-
Windows 10 April 2018 Update:新機能とその使用方法
Windowsは最近、すばらしい機能が満載の最新のアップデートをリリースしました。この新しいアップデートが不要な機能をもたらすかどうかを確認するのは時期尚早ですが、非常に便利な機能がかなりあります。このアップデートがどれほど役立つかは、時が経てばわかります。 Microsoft Edgeはついに、他のブラウザが何年も前にリリースしたいくつかの機能を取得し、静かな時間機能にもいくつかの変更が加えられました。 タイムライン 訪問したページを見つけるのに役立つ新機能は、タイムラインと呼ばれます。この新機能を使用すると、時間単位または日単位でアクティビティを確認できます。アクティビティを確認するに
-
Pythonで文字列を評価し、オブジェクトを返すにはどうすればよいですか?
組み込みのeval()関数には文字列引数が必要です。ただし、Pythonインタープリターは、文字列をPython式として扱い、それが有効かどうかを評価してから、式の結果である型オブジェクトを返します。 算術式を含む文字列 >>> x=eval('2+2') >>> type(x) <class 'int'> >>> x 4 リスト/タプルに評価する文字列 >>> x=eval('tuple([1,2,3])') >>> x (1, 2, 3)