Python でベクトルを正規化する

Manav Narula 2023年1月30日
  1. Python で数式を使用してベクトルを正規化する
  2. Python で numpy.linalg.norm() 関数を使用してベクトルを正規化する
  3. Python で sklearn.preprocessing.normalize() 関数を使用してベクトルを正規化する
Python でベクトルを正規化する

機械学習の世界で一般的な概念は、ベクトルまたはデータセットをアルゴリズムに渡す前に正規化することです。

ベクトルの正規化について話すとき、そのベクトルの大きさは単位ベクトルとして 1 であると言います。

このチュートリアルでは、numpy 配列を単位ベクトルに変換します。

Python で数式を使用してベクトルを正規化する

この方法では、数式を使用して配列のベクトルノルムを計算します。このノルムベクトルで配列を除算すると、正規化されたベクトルが得られます。次のコードはこれを実装しています。

import numpy as np

v = np.random.rand(10)

normalized_v = v / np.sqrt(np.sum(v ** 2))
print(normalized_v)

出力:

[0.10366807 0.05821296 0.11852538 0.42957961 0.27653372 0.36389277
 0.47575824 0.32059888 0.2721495  0.41856126]

ベクトルの長さが 0 の場合、このメソッドはエラーを返すことに注意してください。

Python で numpy.linalg.norm() 関数を使用してベクトルを正規化する

Python の NumPy モジュールには、配列のベクトルノルムを返すことができる norm() 関数があります。次に、このノルムベクトルで配列を除算して、正規化されたベクトルを取得します。たとえば、以下のコードでは、ランダム配列を作成し、このメソッドを使用してその正規化された形式を見つけます。

import numpy as np

v = np.random.rand(10)
normalized_v = v / np.linalg.norm(v)
print(normalized_v)

出力:

[0.10881785 0.32038649 0.51652046 0.05670539 0.12873248 0.52460815
 0.32929967 0.32699446 0.0753471  0.32043046]

Python で sklearn.preprocessing.normalize() 関数を使用してベクトルを正規化する

sklearn モジュールには、データ前処理やその他の機械学習ツールに利用できる効率的な方法があります。このライブラリの normalize() 関数は通常、2 次元行列で使用され、L1 および L2 正規化のオプションを提供します。以下のコードは、この関数を 1 次元配列で使用し、正規化された形式を見つけます。

import numpy as np
from sklearn.preprocessing import normalize

v = np.random.rand(10)
normalized_v = normalize(v[:, np.newaxis], axis=0).ravel()
print(normalized_v)

出力:

[0.19361438 0.36752554 0.26904722 0.10672546 0.32089067 0.48359538
 0.01824837 0.47591181 0.26439268 0.33180998]

上記のメソッドで使用されている ravel() メソッドは、Python で多次元配列をフラット化するために使用されます。

著者: Manav Narula
Manav Narula avatar Manav Narula avatar

Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.

LinkedIn

関連記事 - NumPy Vector