首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >sklearn.preprocessing.normalize中的范数参数

sklearn.preprocessing.normalize中的范数参数
EN

Stack Overflow用户
提问于 2018-01-12 18:48:18
回答 1查看 11K关注 0票数 2

滑雪文献中,"norm“可以是

范数:“L1”、“L2”或“max”,可选(默认情况下为“l2”) 用于规范每个非零样本(或每个非零特征,如果轴为0)的范数。

关于规范化的文献没有清楚地说明“L1”、“L2”或“max”是如何计算的。

有人能把这些清理干净吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-12 19:52:28

非正式地说,范数是(向量)长度概念的推广;来自维基百科条目

在线性代数、泛函分析和数学相关领域中,范数是为向量空间中的每个向量指定严格正长度或大小的函数。

L2-范数是通常的欧氏长度,即平方向量元素之和的平方根。

L1-范数是向量元素绝对值的总和。

最大范数 (有时也称为无穷范数)就是最大绝对向量元素。

正如文档所述,这里的规范化意味着使我们的向量(即数据样本)具有单位长度,因此也需要指定哪些长度(即哪个范数)。

您可以很容易地验证上面的内容--修改来自文档的示例

代码语言:javascript
复制
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。

代码语言:javascript
复制
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.])
票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48232331

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档