我想用python执行matrix balancing。我想用^{
from scipy import linalg
import numpy as np
x = np.array([[1,2,7], [9,1,1], [1,2,10*np.pi]])
y, permscale = linalg.matrix_balance(x)
np.abs(x).sum(axis=0) / np.abs(x).sum(axis=1)
np.abs(y).sum(axis=0) / np.abs(y).sum(axis=1)
permscale
array([[ 1., 0., 0.],
[ 0., 2., 0.],
[ 0., 0., 1.]])
它看起来并没有真正平衡矩阵的行和列。你知道我该怎么办吗?在
如果我这样做:y, permscale = linalg.matrix_balance(x, scale=False)
结果也不是标准化的:
^{pr2}$
您对输出的分析是正确的,但在考虑^{} 的作用时却错了。从文件上看
我们可以很容易地用你的矩阵来验证
确实是
y
。这意味着matrix_balance
和它声称的一样工作。你声称但这不是真的:这个修正矩阵的L1范数是平衡的,在2的一个数量级之内,这样精确的数量级被反映到标度矩阵
permscale
。在你的目标是使你的矩阵加倍随机,而不是(仅仅)平衡?如果是这样,你可以看看例如this project。按照上面的指南,我发现了下面的双随机矩阵
^{pr2}$对于大多数用例来说,它应该“足够接近”。在
相关问题 更多 >
编程相关推荐