Pythonのscikit-learnでデータをスケーリングする方法|MinMaxScalerによる正規化の実装例
特徴量スケーリング(Feature Scaling)は、機械学習アルゴリズムを構築する際のデータ前処理段階において非常に重要なステップです。データを特定の範囲に正規化することで、モデルが安定して学習できるようになります。
また、スケーリングを行うことで計算処理の速度が向上する場合もあります。特に勾配降下法などの最適化手法では、収束が速くなるというメリットが期待できます。
なぜスケーリングが必要なのか?
学習アルゴリズムに入力されるデータは、一貫性があり、構造化されていることが求められます。すべての特徴量が同じ尺度に揃っていなければ、精度の高い予測は困難です。しかし、現実世界のデータは非構造的であることが多く、多くの場合、各特徴量は同じ尺度上に存在していません。
そこで登場するのが「正規化」です。正規化は最も重要なデータ準備プロセスの一つであり、入力データセットの各列の値を共通の尺度に揃える役割を果たします。
ここからは、PythonのScikit-learnライブラリを使用して特徴量スケーリングを実行する具体的な方法を見ていきましょう。
コード例
import numpy as np
from sklearn import preprocessing
input_data = np.array(
[[34.78, 31.9, -65.5],
[-16.5, 2.45, -83.5],
[0.5, -87.98, 45.62],
[5.9, 2.38, -55.82]])
data_scaler_minmax = preprocessing.MinMaxScaler(feature_range=(0,1))
data_scaled_minmax = data_scaler_minmax.fit_transform(input_data)
print ("\nThe scaled data is \n", data_scaled_minmax)出力結果
The scaled data is [[1. 1. 0.1394052 ] [0. 0.75433767 0. ] [0.33151326 0. 1. ] [0.43681747 0.75375375 0.21437423]]
コードの解説
必要なパッケージ(NumPyとscikit-learnのpreprocessingモジュール)をインポートします。
NumPyライブラリを使用して、サンプル用の入力データを作成します。
preprocessingクラスに含まれるMinMaxScaler関数を使用し、feature_range=(0,1)を指定することで、データを0〜1の範囲にスケーリングします。
fit_transformメソッドによって、配列内のすべての値が0〜1の間の値へと変換されます。
スケーリング後のデータがコンソールに出力されます。
Min-Maxスケーリングの仕組み
MinMaxScalerは、次の式に基づいて各特徴量を指定された範囲へ線形に変換します。
X_scaled = (X − X_min) / (X_max − X_min)
この変換により、各列の最小値は0、最大値は1にマッピングされ、その他の値もその比率に応じて変換されます。ただし、外れ値の影響を受けやすいという注意点があります。一方で、ニューラルネットワークやk近傍法(KNN)など、距離やスケールに敏感なアルゴリズムとの相性が非常に良い手法です。
-
PythonのSeabornライブラリでヒストグラムを表示する方法をわかりやすく解説
データ可視化の重要性 データ分析において、可視化は非常に重要なステップです。生の数値を一つずつ確認したり、複雑な計算を実行したりしなくても、グラフを見るだけでデータ全体の傾向や分布を直感的に把握できます。さらに、分析で得られた定量的な知見を、聴衆やチームメンバーに対して効果的に伝える手段としても活用できます。 Seabornとは Seabornは、Pythonでデータ可視化を行うためのライブラリの一つです。Matplotlibをベースにしており、洗練されたカスタムテーマと高水準なインターフェースを備えているのが特徴です。少ないコード量で美しい統計グラフを作成できるため、データサイエンスの分野
-
PythonとSeabornを使って散布図を表示する方法をわかりやすく解説
データ分析において可視化(ビジュアライゼーション)は非常に重要なステップです。数値を一つひとつ確認したり複雑な計算を行ったりしなくても、データに何が起きているのかを直感的に把握できるからです。その可視化を手軽に実現できるライブラリの一つが、Pythonの「Seaborn」です。 散布図(scatter plot)とは、データポイントをグラフ上に点として散りばめて分布を表現するグラフのことです。数値データの値をドットで表し、横軸・縦軸上の各ドットの位置が、それぞれのデータポイントの値を示します。散布図を使うことで、2つの変数間の関係性(相関)を視覚的に理解することができます。 ここでは、Sea