在滑雪文献中,"norm“可以是
范数:“L1”、“L2”或“max”,可选(默认情况下为“l2”) 用于规范每个非零样本(或每个非零特征,如果轴为0)的范数。
关于规范化的文献没有清楚地说明“L1”、“L2”或“max”是如何计算的。
有人能把这些清理干净吗?
发布于 2018-01-12 19:52:28
非正式地说,范数是(向量)长度概念的推广;来自维基百科条目。
在线性代数、泛函分析和数学相关领域中,范数是为向量空间中的每个向量指定严格正长度或大小的函数。
L2-范数是通常的欧氏长度,即平方向量元素之和的平方根。
L1-范数是向量元素绝对值的总和。
最大范数 (有时也称为无穷范数)就是最大绝对向量元素。
正如文档所述,这里的规范化意味着使我们的向量(即数据样本)具有单位长度,因此也需要指定哪些长度(即哪个范数)。
您可以很容易地验证上面的内容--修改来自文档的示例
from sklearn import preprocessing
import numpy as np
X = [[ 1., -1., 2.],
[ 2., 0., 0.],
[ 0., 1., -1.]]
X_l1 = preprocessing.normalize(X, norm='l1')
X_l1
# array([[ 0.25, -0.25, 0.5 ],
# [ 1. , 0. , 0. ],
# [ 0. , 0.5 , -0.5 ]])您可以通过简单的视觉检查来验证X_l1元素的绝对值之和为1。
X_l2 = preprocessing.normalize(X, norm='l2')
X_l2
# array([[ 0.40824829, -0.40824829, 0.81649658],
# [ 1. , 0. , 0. ],
# [ 0. , 0.70710678, -0.70710678]])
np.sqrt(np.sum(X_l2**2, axis=1)) # verify that L2-norm is indeed 1
# array([ 1., 1., 1.])https://stackoverflow.com/questions/48232331
复制相似问题