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による機械学習入門

StandardScaler、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以下に正規化する手法。

MinMax
MinMaxScaler

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

MinMaxScaling

MaxAbsScaler

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

最大絶対値
最大絶対値スケーラー
最大絶対値スケーリング

StandardScaler

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

Note
注意

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

StandardScaler の公式
StandardScaler
StandardScaling

こちらは 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)

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

Note
注意

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

どのスケーラーを使用するべきか?

StandardScaler は 外れ値に敏感 であり、デフォルトのスケーラーとしてはあまり適していません。StandardScaler の代替を選ぶ場合、MinMaxScaler と MaxAbsScaler のどちらを使用するかは、MinMaxScaler でデータを [0,1] の範囲にスケーリングするか、MaxAbsScaler で [-1,1] の範囲にスケーリングするかという個人の好みによります。

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

2. なぜデータセットに対して StandardScaler の使用を再考する必要がある場合がありますか?

question mark

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

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

question mark

なぜデータセットに対して StandardScaler の使用を再考する必要がある場合がありますか?

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

すべて明確でしたか?

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

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

セクション 2. 章 10

AIに質問する

expand

AIに質問する

ChatGPT

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

StandardScaler、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以下に正規化する手法。

MinMax
MinMaxScaler

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

MinMaxScaling

MaxAbsScaler

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

最大絶対値
最大絶対値スケーラー
最大絶対値スケーリング

StandardScaler

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

Note
注意

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

StandardScaler の公式
StandardScaler
StandardScaling

こちらは 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)

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

Note
注意

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

どのスケーラーを使用するべきか?

StandardScaler は 外れ値に敏感 であり、デフォルトのスケーラーとしてはあまり適していません。StandardScaler の代替を選ぶ場合、MinMaxScaler と MaxAbsScaler のどちらを使用するかは、MinMaxScaler でデータを [0,1] の範囲にスケーリングするか、MaxAbsScaler で [-1,1] の範囲にスケーリングするかという個人の好みによります。

すべて明確でしたか?

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

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

セクション 2. 章 10
some-alt