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つを試してチャットを始めてください