向量的范数是指向量的长度或大小。有不同的方法来计算长度。向量的范数是一个非负值。在本教程中,我们将学习如何计算向量的不同类型的范数。

向量 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 来计算这两个规范。希望您和我们一起学习愉快!

Logo

Python社区为您提供最前沿的新闻资讯和知识内容

更多推荐