Python中向量的范数-计算步骤
向量的范数是指向量的长度或大小。有不同的方法来计算长度。向量的范数是一个非负值。在本教程中,我们将学习如何计算向量的不同类型的范数。
向量 x 的范数表示为:‖x‖
向量的范数是向量空间中其与原点的距离的度量。
要计算标准,您可以使用Numpy或Scipy。两者都提供了类似的函数来计算范数。
在本教程中,我们将研究机器学习领域中最常见的两种规范。
这些是 :
-
L1 规范
-
L2 规范
如何计算向量的L1范数?
向量的 L1 范数也称为曼哈顿距离或出租车范数。向量 x 的 L1 范数的表示法是 ‖x‖1。
要计算范数,您需要取绝对向量值的总和。
让我们举个例子来理解这一点:
a = [1,2,3,4,5]
对于上面的数组,L1 范数将是:
1+2+3+4+5 = 15
让我们再举一个例子:
a = [-1,-2,3,4,5]
这个数组的 L1 范数是:
|-1|+|-2|+3+4+5 = 15
两个向量的 L1 范数与我们在计算它时考虑的绝对值相同。
L1规范的Python实现
让我们看看如何在 Python 中计算向量的 L1 范数。
使用 Numpy
使用 Numpy 计算 L1 范数的 Python 代码如下:
from numpy import array
from numpy.linalg import norm
arr = array([1, 2, 3, 4, 5])
print(arr)
norm_l1 = norm(arr, 1)
print(norm_l1)
输出 :
[1 2 3 4 5]
15.0
让我们尝试在上面的示例中为具有负条目的数组计算它。
from numpy import array
from numpy.linalg import norm
arr = array([-1, -2, 3, 4, 5])
print(arr)
norm_l1 = norm(arr, 1)
print(norm_l1)
输出 :
[-1 -2 3 4 5]
15.0
使用 Scipy
使用 Scipy 计算 L1 与上面的实现没有太大区别。
相同的代码是:
from numpy import array
from scipy.linalg import norm
arr = array([-1, -2, 3, 4, 5])
print(arr)
norm_l1 = norm(arr, 1)
print(norm_l1)
输出 :
[-1 -2 3 4 5]
15.0
该代码与 Numpy 完全相同。
如何计算向量的L2范数?
向量 x 的 L2 范数的符号是 ‖x‖2。
要计算向量的 L2 范数,请取向量平方值之和的平方根。
向量的 L2 范数的另一个名称是 欧几里得距离。 这通常用于计算机器学习模型中的误差。
均方根误差是模型的实际输出与预期输出之间的欧几里得距离。
机器学习模型的目标是减少这个错误。
让我们考虑一个例子来理解它。
a = [1,2,3,4,5]
上述的 L2 范数是:
sqrt(1^2 + 2^2 + 3^2 + 4^2 + 5^2) = 7.416
L2 范数始终是一个正数,因为我们在添加它们之前对值进行平方。
Python实现
Python实现如下:
from numpy import array
from numpy.linalg import norm
arr = array([1, 2, 3, 4, 5])
print(arr)
norm_l2 = norm(arr)
print(norm_l2)
输出 :
[1 2 3 4 5]
7.416198487095663
在这里我们可以看到,norm 方法默认返回 L2 范数。
结论
本教程是关于在 Python 中计算 L1 和 L2 范数。我们使用 Numpy 和 Scipy 来计算这两个规范。希望您和我们一起学习愉快!
更多推荐

所有评论(0)