一个 vector 的 **norm 指的是一个 vector 的长度或大小. 有不同的方法来计算长度. 一个 vector 的norm 是一个非负值. 在本教程中,我们将学习如何计算一个 vector 的不同类型的norm。
一个 vector x 的值表示为: ‖x‖
一个矢量的准则是衡量它在矢量空间中与起源的距离的尺度。
要计算标准,您可以使用 Numpy或 Scipy. 两者都提供类似的函数来计算标准。
在本教程中,我们将探讨在机器学习领域最常见的两种类型的规范。
这些是:**
- 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来计算这两个规范。