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以下に正規化する手法。
こちらは、MinMaxScaler の動作を示すGIFです:
MaxAbsScaler
MaxAbsScaler は、最大絶対値 を見つけ、各値をその値で割ることで動作します。これにより、最大絶対値が1になります。
StandardScaler
StandardScaler の考え方は統計学に由来します。平均値を引いて(ゼロを中心にし)、標準偏差で割ることで(分散を1にする)、データを標準化します。
平均値、標準偏差、分散について理解が不十分な場合は、 Learning Statistics with Python コースを参照してください。ただし、この知識がなくても先に進むことは可能です。
こちらは MinMaxScaler を使用したコーディング例です。他のスケーラーも同様の方法で適用されます。
12345678910import 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 配列に変換するため、出力はあまり見やすくありませんが、パイプラインを使用すれば問題ありません。
特徴量カラム(X 変数)のみをスケーリングしてください。ターゲット変数をスケーリングする必要はありません。逆変換処理が複雑になるためです。
どのスケーラーを使用するべきか?
StandardScaler は 外れ値に敏感 であり、デフォルトのスケーラーとしてはあまり適していません。StandardScaler の代替を選ぶ場合、MinMaxScaler と MaxAbsScaler のどちらを使用するかは、MinMaxScaler でデータを [0,1] の範囲にスケーリングするか、MaxAbsScaler で [-1,1] の範囲にスケーリングするかという個人の好みによります。
1. データ前処理で MinMaxScaler を使用する主な目的は何ですか?
2. なぜデータセットに対して StandardScaler の使用を再考する必要がある場合がありますか?
フィードバックありがとうございます!
AIに質問する
AIに質問する
何でも質問するか、提案された質問の1つを試してチャットを始めてください