用語比較
StandardScalerとMinMaxScalerの違い|平均0・分散1と0〜1の範囲(scikit-learn)
StandardScaler は平均を引いて標準偏差で割り、平均0・分散1にそろえる変換器です。MinMaxScaler は値を指定した範囲(既定は0〜1)に収める変換器です。
どちらも fit で求めた値を transform で使うため、訓練データの範囲に入らない新しいデータを渡したときの結果が違ってきます。
この記事の目次
この記事の根拠と出典
各セクションの見出しの下に、公式資料で確認した内容か編集部の整理かをラベルで示しています。 試験日・料金・申込条件・試験方式は変わることがあるため、申込前に公式サイトで確認してください。
StandardScalerとMinMaxScalerの要点
StandardScaler
公式の説明は「平均を引き、単位分散にスケールして特徴量を標準化する」。式は z = (x - u) / s。外れ値に敏感。
MinMaxScaler
各特徴量を指定の範囲(feature_range、既定は (0, 1))に変換する。外れ値の影響は減らさず、線形に固定の範囲へ縮める。
違いを表で確認
| 比較軸 | StandardScaler | MinMaxScaler |
|---|---|---|
| 変換の式 | z = (x - u) / s。u は訓練データの平均、s は標準偏差 | X_std = (X - 最小値) / (最大値 - 最小値)。そのあと範囲 (min, max) に合わせて拡大・移動する |
| 変換後の値 | 平均0・単位分散。値の範囲は決まっていない | 訓練データでは feature_range の範囲内(例: 0〜1) |
| 外れ値 | 外れ値に敏感で、外れ値があると特徴量ごとに尺度がずれることがある | 外れ値の影響は減らさない。最大の点が上限、最小の点が下限になる |
| fit で保存する値 | mean_(平均)と scale_(標準偏差) | data_min_、data_max_、data_range_ |
Python3エンジニア認定データ分析試験の学習に使う書籍(Amazon)
PRどこで迷っているかを切り分ける
変換後の値を0〜1の範囲にしたい人
MinMaxScaler を使います。feature_range の既定が (0, 1) で、訓練データの最小値が0、最大値が1になります。
SVM(RBFカーネル)や線形モデルの正則化に入れる前にそろえたい人
公式は StandardScaler の説明で、RBFカーネルや L1・L2 正則化は特徴量が0付近に中心化され、分散が同程度であることを前提にしていると述べています。分散が桁違いに大きい特徴量があると、目的関数を支配して他の特徴量から学べなくなることがあります。
テストデータに訓練データの範囲外の値があった人
どちらも transform は fit で求めた値を使います。公式の例では、MinMaxScaler は [[2, 2]] を [[1.5, 0.]] に変換し、1を超える値が出ます。clip=True にすると feature_range の範囲に切り詰められます。
具体例で使い分ける
例 1
StandardScaler: 平均を保存して新しいデータにも使う
公式の例のとおり、data=[[0,0],[0,0],[1,1],[1,1]] に StandardScaler を fit します。
- fit のあと、scaler.mean_ は [0.5 0.5] になります。
- scaler.transform(data) は [[-1,-1],[-1,-1],[1,1],[1,1]] を返します。
- scaler.transform([[2,2]]) は [[3,3]] になります。fit で求めた平均と標準偏差が使われます。
結論: StandardScaler は、訓練データの平均と標準偏差で標準化する。
例 2
MinMaxScaler: 最小値と最大値で0〜1にする
公式の例のとおり、data=[[-1,2],[-0.5,6],[0,10],[1,18]] に MinMaxScaler を fit します。
- fit のあと、scaler.data_max_ は [1. 18.] になります。
- scaler.transform(data) は [[0,0],[0.25,0.25],[0.5,0.5],[1,1]] を返します。
- scaler.transform([[2,2]]) は [[1.5, 0.]] になります。訓練データの範囲の外にある値は、0〜1を超えます。
結論: MinMaxScaler は、訓練データの最小値と最大値で範囲に収める。範囲外の新しい値は収まらない。
問題文から答えを選ぶ手順
- 1
変換後に必要な性質を確認する
値を決まった範囲(0〜1など)に収めたいなら MinMaxScaler。平均0・分散1にそろえたいなら StandardScaler。
- 2
外れ値の有無を確認する
どちらも外れ値の影響は残ります。StandardScaler は尺度がずれ、MinMaxScaler は外れ値が上限や下限を決めます。
- 3
fit は訓練データだけに行う
テストデータには fit で求めた値をそのまま使う transform を行います。fit_transform との使い分けは別の記事で確認します。
試験での見分け方
- 1StandardScaler は、平均を引いて単位分散にスケールする。式は z = (x - u) / s。
- 2MinMaxScaler は、特徴量を feature_range(既定 (0, 1))に変換する。
- 3StandardScaler は外れ値に敏感。MinMaxScaler は外れ値の影響を減らさず、線形に縮める。
- 4どちらも、訓練データで fit した値を、新しいデータの transform に使う。
- 5MinMaxScaler の clip=True は、変換後の値を feature_range に切り詰める。
誤答しやすい選択肢
StandardScaler の変換後は0〜1に収まると考える
修正: StandardScaler は平均0・単位分散にそろえる変換で、値の範囲は決まっていません。公式の例でも、新しいデータ [[2,2]] は [[3,3]] になります。
MinMaxScaler なら外れ値の影響がなくなると考える
修正: 公式は、MinMaxScaler は外れ値の影響を減らさず、線形に固定の範囲へ縮めると説明しています。
テストデータも0〜1に必ず収まると考える
修正: 範囲は訓練データの最小値と最大値で決まります。公式の例では [[2,2]] が [[1.5, 0.]] になります。収めたいときは clip=True を指定します。
確認問題
Q1StandardScaler の式 z = (x - u) / s で、u と s は何か?
答え: u は訓練データの平均、s は標準偏差
公式の説明です。with_mean=False なら u は0、with_std=False なら s は1になります。
Q2MinMaxScaler の feature_range の既定値は?
答え: (0, 1)
公式の引数の説明です。変換後の値の範囲を指定します。
Q3公式の例で、data=[[-1,2],[-0.5,6],[0,10],[1,18]] に fit した MinMaxScaler で [[2,2]] を transform するとどうなるか?
答え: [[1.5, 0.]]
訓練データの範囲の外にある値なので、0〜1を超えます。
Q4StandardScaler と MinMaxScaler のうち、外れ値に敏感だと公式が述べているのは?
答え: StandardScaler
公式は、StandardScaler は外れ値に敏感で、外れ値があると特徴量ごとに尺度が異なることがあると説明しています。
到達チェック
- StandardScaler の式を言える
- MinMaxScaler の feature_range の既定値を言える
- 外れ値についての公式の説明を、2つの変換器で区別して言える
- 訓練データの範囲外の値の変換結果を、公式の例で説明できる
関連ページで確認する
同じ資格で次に知りたいこと
- astypeとto_numericの違い|変換できない値の扱いとerrors(pandas・Python3データ分析)
pandasのastypeとto_numericの違いを、変換できる型、変換できない文字列の扱い(errors='coerce')、downcastで整理します。pandas公式で照合した例と確認問題つき。
- get_dummiesとOneHotEncoderの違い|pandasとscikit-learnのワンホット変換
pandasのget_dummiesとscikit-learnのOneHotEncoderの違いを、変換する対象、欠損値、未知のカテゴリの扱い、出力の型で整理します。公式の例で照合した確認問題つき。
- GridSearchCVとRandomizedSearchCVの違い|全探索とランダム探索(Python3データ分析)
scikit-learnのGridSearchCVとRandomizedSearchCVの違いを、探索の方法、試す回数、パラメータの渡し方、再現性で整理します。公式の説明で照合した確認問題つき。
よくある質問
QStandardScaler と MinMaxScaler の違いは?
StandardScaler は平均0・単位分散にそろえます。MinMaxScaler は各特徴量を feature_range(既定 (0, 1))の範囲に収めます。
Q外れ値があるときはどちらがよいですか?
公式は、StandardScaler は外れ値に敏感、MinMaxScaler は外れ値の影響を減らさないと説明しています。どちらも外れ値の影響は残ります。
Q新しいデータの値が範囲を超えたらどうなりますか?
MinMaxScaler は0〜1を超える値を返します。clip=True を指定すると feature_range に切り詰められます。
Qデータ分析試験の範囲?
本サイトの第6章scikit-learnの「変換器とパイプライン」で扱います。出題の形式や範囲は、受験前に公式の案内で確認してください。
次に見る比較
- G検定・DS検定・統計検定2級で重なる用語10語の比較
同じ名前の用語の定義と収録章を、資格ごとに並べます。
- ベイズの定理と条件付き確率の違い(統計検定2級の式と計算例)
求める確率の向きの違いと、陽性になる確率の計算例を確かめます。
- 紛らわしい用語ペア早見表
混同しやすい用語の違いと判定の手掛かりを、資格別の一覧で確かめます。
執筆: AI資格ドリル編集部(運営者情報を見る)
