我使用scipy.sparse
将sA
矩阵sklearn.preprocessing.normalize
标准化。我阅读了该文档,但对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
答案 0 :(得分:1)
那是使用l2 norm(或欧几里德范数/距离),换句话说,元素的平方和总和为1。
以下输出1的预期向量:
const getApi = () => {
let url = '/* URL */';
return Request.get(url).then(res => res.body);
}
componentWillMount(){
getApi().then(content => this.setState({ content }));
}