Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
学ぶ StandardScaler、MinMaxScaler、MaxAbsScaler | Scikit-learnによるデータの前処理
Pythonによる機械学習入門

bookStandardScaler、MinMaxScaler、MaxAbsScaler

メニューを表示するにはスワイプしてください

データのスケーリングには、以下の3つの一般的な手法がある:

  • MinMaxScaler:特徴量を[0, 1]の範囲にスケーリング;
  • MaxAbsScaler:特徴量を最大絶対値が1になるようにスケーリング(データは[-1, 1]の範囲に収まることが保証される);
  • StandardScaler:特徴量を標準化し、平均を0、分散を1にする。

スケーラーの動作を説明するために、penguins dataset'culmen_depth_mm'および'body_mass_g'の特徴量を例に挙げる。これらの特徴量をプロットすることで、それぞれのスケールを観察できる。

MinMaxScaler

MinMaxScalerは、最小値を引いて値をゼロから始め、その後**(x_max - x_min)**で割ることで、値を1以下にスケーリングする。

こちらは、MinMaxScaler の動作を示すGIFです:

MaxAbsScaler

MaxAbsScaler は、最大絶対値 を求め、各値をその値で割ることで動作します。これにより、最大絶対値が1になります。

StandardScaler

StandardScaler の考え方は統計学に由来します。平均値を引いて(ゼロ中心化)、標準偏差で割る(分散を1にする)ことで動作します。

Note
注意

平均値、標準偏差、分散が何であるか理解していない場合は、 Learning Statistics with Python コースをご覧ください。ただし、この知識がなくても先に進むことは可能です。

こちらは MinMaxScaler を使用したコーディング例です。他のスケーラーも同様の方法で適用されます。

12345678910
import pandas as pd from sklearn.preprocessing import MinMaxScaler df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/penguins_imputed_encoded.csv') # Assign X,y variables X, y = df.drop('species', axis=1), df['species'] # Initialize a MinMaxScaler object and transform the X minmax = MinMaxScaler() X = minmax.fit_transform(X) print(X)
copy

スケーラーはデータを numpy 配列に変換するため、出力はあまり見栄えがよくありませんが、パイプラインを使用すれば問題ありません。

Note
注意

スケーリングは特徴量カラムX 変数)のみに適用してください。ターゲット変数をスケーリングする必要はありません。逆変換処理が複雑になるためです。

どのスケーラーを使うべきか?

StandardScaler は外れ値に対してより敏感であり、デフォルトのスケーラーとしてはあまり適していません。StandardScaler の代替を好む場合、MinMaxScalerMaxAbsScaler のどちらを選択するかは、MinMaxScaler による [0,1] へのスケーリングと MaxAbsScaler による [-1,1] へのスケーリングのいずれを好むかによります。

1. データ前処理で MinMaxScaler を使用する主な目的は何ですか?

2. StandardScaler の使用をデータセットで再考すべき理由は何ですか?

question mark

データ前処理で MinMaxScaler を使用する主な目的は何ですか?

正しい答えを選んでください

question mark

StandardScaler の使用をデータセットで再考すべき理由は何ですか?

正しい答えを選んでください

すべて明確でしたか?

どのように改善できますか?

フィードバックありがとうございます!

セクション 2.  10

AIに質問する

expand

AIに質問する

ChatGPT

何でも質問するか、提案された質問の1つを試してチャットを始めてください

セクション 2.  10
some-alt