繁体   English   中英

sklearn.preprocessing.normalize中的norm ='l2'对于矩阵归一化有什么作用?

[英]What does norm='l2' in sklearn.preprocessing.normalize do for matrix normalization?

我在这里通过使用sklearn.preprocessing.normalize scipy.sparse矩阵sA了归一化。 我阅读了该文档,但是对norm='l...'理解却不够,所以我对其进行了测试。

norm='l1'正常,我在所有行中得到的期望结果为1。

A = np.array([[1,2,0],[0,0,3],[1,0,4]])
sA = sp.csr_matrix(A)   
normsA = normalize(sA, norm='l1', axis=0)
print normsA
print "---"
print sum(normsA)

>>(0, 0)    0.5
  (2, 0)    0.5
  (0, 1)    1.0
  (1, 2)    0.428571428571
  (2, 2)    0.571428571429
  ---
  (0, 0)    1.0
  (0, 1)    1.0
  (0, 2)    1.0

但是,当我尝试l2 ,我找不到它如何对矩阵进行归一化。 矩阵或转置矩阵的总和不等于1。 l2对这里的归一化有什么作用?

normsA2 = normalize(sA, norm='l2', axis=0)
print sum(normsA2)
print sum(normsA2.T)

>>(0, 0)    1.41421356237
  (0, 1)    1.0
  (0, 2)    1.4
  (0, 0)    1.70710678119
  (0, 1)    0.6
  (0, 2)    1.50710678119

那就是使用l2范数 (或欧几里德范数/距离),换句话说,元素平方的和为1。

以下输出期望的1的向量:

sum(normsA2 ** 2, axis=0)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM