Python 中矢量的 Norm - 计算步骤

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

一个 vector x 的值表示为: ‖x

一个矢量的准则是衡量它在矢量空间中与起源的距离的尺度。

要计算标准,您可以使用 NumpyScipy. 两者都提供类似的函数来计算标准。

在本教程中,我们将探讨在机器学习领域最常见的两种类型的规范。

这些是:**

  • L1 标准
  • L2 标准

如何计算一个矢量的L1标准?

一个矢量的L1规范也被称为 曼哈顿距离Taxicab标准

要计算标准,你需要采取绝对矢量值的 **总和。

让我们举一个例子来理解这一点:

1a = [1,2,3,4,5]

对于上面的数组,L1标准将是:

11+2+3+4+5 = 15

让我们再举一个例子:

1a = [-1,-2,3,4,5]

这个数组的L1标准是:

1|-1|+|-2|+3+4+5 = 15

对于两个矢量来说,L1标准是相同的,因为我们在计算它时考虑绝对值。

Python L1 标准的实施

让我们看看我们如何在Python中计算一个矢量的L1标准。

使用 Numpy

使用Numpy计算L1标准的Python代码如下:

1from numpy import array
2from numpy.linalg import norm
3arr = array([1, 2, 3, 4, 5])
4print(arr)
5norm_l1 = norm(arr, 1)
6print(norm_l1)

输出:

1[1 2 3 4 5]
215.0

让我们尝试在上面的例子中计算负输入的数组。

1from numpy import array
2from numpy.linalg import norm
3arr = array([-1, -2, 3, 4, 5])
4print(arr)
5norm_l1 = norm(arr, 1)
6print(norm_l1)

输出:

1[-1 -2 3 4 5]
215.0

使用Scipy

使用Scipy计算L1与上面的实现不太不同。

相同的代码是:

1from numpy import array
2from scipy.linalg import norm
3arr = array([-1, -2, 3, 4, 5])
4print(arr)
5norm_l1 = norm(arr, 1)
6print(norm_l1)

输出:

1[-1 -2 3 4 5]
215.0

代码与Numpy One完全相似。

如何计算一个矢量的L2标准?

一个 vector x 的 L2 定义为 ‖x‖2。

要计算一个 vector 的 L2 值,请从平方 vector 值的总和中取平方根。

一个 vector 的 L2 规范的另一个名称是 ** Euclidean 距离,这通常用于计算机器学习模型中的错误。

根平均平方错误是模型的实际输出和预期输出之间的欧克利底距离。

机器学习( / 社区 / 教程 / 介绍到机器学习)模型的目标是减少此错误。

让我们举一个例子来理解它。

1a = [1,2,3,4,5]

上面的L2标准是:

1sqrt(1^2 + 2^2 + 3^2 + 4^2 + 5^2) = 7.416

L2标准总是一个积极的数量,因为我们在添加它们之前正在划分值。

Python 实施

Python的实施方式如下:

1from numpy import array
2from numpy.linalg import norm
3arr = array([1, 2, 3, 4, 5])
4print(arr)
5norm_l2 = norm(arr)
6print(norm_l2)

输出:

1[1 2 3 4 5]
27.416198487095663

在这里,我们可以看到,默认情况下, norm 方法返回 L2 规范。

结论

本教程是关于在Python计算L1和L2规范. 我们使用Numpy和Scipy来计算这两个规范。

Published At
Categories with 技术
Tagged with
comments powered by Disqus