在 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