在 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-D 矩陣一起使用,並提供 L1 和 L2 歸一化的選項。下面的程式碼將此函式與一維陣列配合使用,並找到其歸一化化形式。

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