Pythonのscikit-learnでL2正規化を実装する方法を徹底解説
一定の範囲の値を標準化された範囲の値へ変換する処理を「正規化(ノーマライゼーション)」と呼びます。変換後の値は、-1から+1の間、あるいは0から1の間に収まるのが一般的です。また、減算や除算といった基本的な演算を組み合わせることでも、データを正規化することが可能です。
L2正規化とは
L2正規化は「最小二乗法(Least Squares)」としても知られる手法です。この正規化では、データを変換し、各行における値の二乗和が必ず1になるように調整します。これにより、ベクトルの大きさ(ノルム)が1に揃えられ、特徴量のスケールが異なるデータ同士を公平に比較できるようになります。
それでは、Pythonのscikit-learnを使ってL2正規化を実装する具体的な方法を見ていきましょう。
コード例
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]]
)
normalized_data_l2 = preprocessing.normalize(input_data, norm='l2')
print("\nL2 normalized data is \n", normalized_data_l2)実行結果
L2 normalized data is [[ 0.43081298 0.39513899 -0.81133554] [-0.19377596 0.02877279 -0.98062378] [ 0.00504512 -0.88774018 0.4603172 ] [ 0.10501701 0.04236279 -0.99356772]]
コードの解説
まず、必要なパッケージ(NumPyとscikit-learnの前処理モジュール)をインポートします。
入力データは、NumPyライブラリを使用して多次元配列として生成します。
preprocessingクラスに含まれるnormalize関数を呼び出すことで、各行の値の二乗和が1になるようにデータを正規化します。引数
norm='l2'を指定することで、正規化の種類を「L2」に設定しています。この処理により、配列内のすべてのデータが正規化され、各行の二乗和は必ず1になります。
最後に、正規化されたデータをコンソールに出力して確認します。
まとめ
L2正規化は、機械学習モデルに入力する前の前処理として非常に有用な手法です。特に、特徴量のスケールが大きく異なるデータセットを扱う際や、コサイン類似度などベクトルの方向性が重要となる場面で効果を発揮します。scikit-learnのnormalize関数を使えば、わずか数行のコードで簡単に実装できるため、ぜひ活用してみてください。
-
Pythonの「seaborn」ライブラリを使用してデータを視覚的に表現するにはどうすればよいですか?
機械学習とデータ可視化の関係機械学習とは、データからモデルを構築し、まだ見たことのないデータに対しても汎化できるようにすることを目的とした技術です。機械学習モデルに入力するデータは、システムが正しく理解できる形である必要があります。それによって、モデルはデータを適切に解釈し、精度の高い結果を生成できるようになります。Seabornとは何かSeabornは、データの可視化を支援するPythonライブラリです。あらかじめカスタマイズされた美しいテーマと高水準インターフェースを備えており、このインターフェースを活用することで、扱うデータの種類や、フィルタを適用した際の挙動を柔軟にカスタマイズ・制御す
-
Pythonでscikit-learnライブラリを使って画像の解像度を取得する方法
はじめに:データ前処理とはデータ前処理とは、さまざまなリソース(または単一のリソース)から収集したすべてのデータを、共通のフォーマットや統一されたデータセットにまとめる作業のことです。現実世界のデータは決して完璧ではないため、欠損セル、エラー、外れ値、列間の不整合などが含まれている可能性があります。また、画像が正しく配置されていなかったり、不鮮明だったり、ファイルサイズが過大だったりすることもあります。前処理の目的は、こうした不整合やエラーを取り除き、データを分析可能な状態に整えることにあります。画像の解像度を取得するには、組み込み関数「shape」を使用します。画像を読み込むと、そのピクセル