3.3.3
MinMaxScaler で区間正規化する
まとめ
- 特徴量を最小値・最大値をもとに任意の区間(例: [0, 1])へ線形スケーリングする。
sklearn.preprocessing.MinMaxScalerのfit_transformで変換し、inverse_transformで元に戻す。- 距離ベースのモデルや画像ピクセル正規化など、値の範囲を揃える前処理が必要なときに使う。
<p><b>MinMaxScaler</b> は特徴量の最小値と最大値を使い、値を任意の区間 \([a, b]\) に線形変換します。距離を意味づける前処理や、画像ピクセルを 0〜1 に正規化する用途でよく使われます。</p>
定義 #
特徴量 (x) に対して、最小値 (x_{\min})、最大値 (x_{\max}) を用いた変換は
$$ x' = \frac{x - x_{\min}}{x_{\max} - x_{\min}} (b - a) + a $$です。既定値は (a = 0, b = 1) ですが、([-1, 1]) や ([0, 255]) への写像も可能です。
実装例 #
| |

実務でのポイント #
- 学習データから得られる
scaler.data_min_とscaler.data_max_を保存し、本番でも同じ scaler を用いてtransformします。 - 新しいデータで範囲外の値が出る場合は
clip=Trueを指定し、出力を[a, b]内に収めるのが安全です。 - 外れ値が多い特徴量では範囲が極端に広がるため、MinMaxScaler より RobustScaler などを検討してください。
- 逆変換は
scaler.inverse_transformを呼び出すだけで元のスケールに戻せます。