StandardScaler をいつどのように使用するか?
特定のデータセットの特徴が範囲内で大きく変動する場合、またはさまざまな測定単位で記録される場合、StandardScaler が役に立ちます。
StandardScaler によって平均が 0 に減らされた後、データは分散 1 にスケーリングされます。ただし、データの経験的平均と標準偏差を決定する場合、データ内に存在する外れ値は、特性値のスペクトルを減少させる重大な影響を及ぼします。
多くの機械学習アルゴリズムでは、開始時の特徴のこうしたばらつきが原因で問題が発生する可能性があります。たとえば、距離を計算するアルゴリズムの場合、データセットの特徴のいずれかが、範囲が広いか完全に異なる値を持つ場合、データセットのその特定の特徴が距離の計算を制御します。
sklearn の StandardScaler 関数は、値が異なる範囲にあるデータセットの変数は、モデルの適合パラメーターとトレーニング関数に均等に寄与せず、そのモデルで行われた予測にバイアスをもたらす可能性があるという理論に基づいています。
したがって、機械学習モデルに特徴を含める前に、データを正規化する必要があります (μ = 0、σ = 1)。この潜在的な問題に対処するために、特徴量エンジニアリングの標準化が一般的に採用されています。
Sklearnを使用した標準化
sklearn.preprocessing.StandardScaler(*, copy = True, with_mean = True, with_std = True)
この関数を使用して、特徴から平均を除去し、単位分散にスケールすることにより、特徴が標準化されます。
特徴の標準スコアを計算する式は z = (x - u) / s です。ここで、u はトレーニング特徴の平均 (または with_mean = False の場合は 0)、s はサンプルの標準偏差 (または with_std = False の場合は 1) です。 )。
トレーニング セット内の特徴に関する関連統計を計算することにより、センタリングとスケーリングが各特徴に個別に適用されます。次に、transform() を使用する後のサンプルで使用するために、fit() メソッドは平均と標準偏差を保存します。
パラメーター:
属性:
StandardScaler クラスのメソッド
フィット(X[, y, サンプルの重み]) | このメソッドは、後でデータをスケーリングするために使用する平均と標準偏差を計算します。 |
fit_transform(X[, y]) | このメソッドは、データのパラメーターを適合させてから、それを変換します。 |
get_feature_names_out([入力_機能]) | このメソッドは、変換の機能名を取得します。 |
get_params([ディープ]) | このメソッドは、特定の推定器のパラメータを提供します。 |
inverse_transform(X[, コピー]) | データのサイズを元の形式に合わせて縮小します。 |
部分フィット(X[, y, サンプルの重み]) | X の平均と標準偏差は、後のスケーリングのためにオンラインで計算されます。 |
set_params(**params) | このメソッドは、推定器のパラメータの値を設定するために使用されます。 |
変換(X[,コピー]) | このメソッドは、クラスにすでに格納されているパラメーターを使用してデータを変換します。 |
StandardScaler の例
まず、必要なライブラリをインポートします。 StandardScaler 関数を使用するには、Sklearn ライブラリをインポートする必要があります。
次に、iris データセットを読み込みます。 sklearn.datasets ライブラリから IRIS データセットをインポートできます。
StandardScaler クラスのオブジェクトを作成します。
独立した機能とターゲットの機能を分離します。
fittransform() メソッドを使用して、データセットへの変換を実装します。
構文:
区切り文字Java
object_ = StandardScaler() object_.fit_transform(features)
最初に、上記の構文に従って StandardScaler() メソッドのインスタンスを構築しました。さらに、提供されたオブジェクトとともに fit_transform() を使用してデータを標準化します。
コード
# Python program to standardize the data # Importing the required library from sklearn.preprocessing import StandardScaler from sklearn.datasets import load_iris # Loading the dataset X, Y = load_iris(return_X_y = True) # Printing 3 rows of original data print(X[:3, :]) # Creating an object of the StandardScaler class std_scaler = StandardScaler() # Printing 3 rows of the transformed data print(std_scaler.fit_transform(X)[:3, :]) print(std_scaler.mean_)
出力
[[5.1 3.5 1.4 0.2] [4.9 3. 1.4 0.2] [4.7 3.2 1.3 0.2]] [[-0.90068117 1.01900435 -1.34022653 -1.3154443 ] [-1.14301691 -0.13197948 -1.34022653 -1.3154443 ] [-1.38535265 0.32841405 -1.39706395 -1.3154443 ]] [5.84333333 3.05733333 3.758 1.19933333]