几个小时以来,我一直在寻找解决这个问题的方法,但到目前为止我什么都找不到...
所以我有两个向量,我们称它们为b和x,我知道所有的值。它们加起来等于相同的数量,所以sum(b) = sum(x)
。
我也有一个矩阵,我们称它为A,我知道它的值是0,所有其他值都是未知的(但不同于0)。
此外,A的每一列的元素的总和为1(我认为这是一个左随机矩阵)
通常,等式可以用A*x = b
的形式编写。
现在我正在尝试查找A的缺失值。
我在这里找到了针对一般问题的一个答案:https://math.stackexchange.com/questions/1170843/solving-ax-b-when-x-and-b-are-given
此外,我查看了numpy.linalg的文档 :https://docs.scipy.org/doc/numpy/reference/routines.linalg.html,但我不知道该怎么做。
它看起来类似于多线性回归问题,但是在sklearn上,我什么也找不到:https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LinearRegression.html#sklearn.linear_model.LinearRegression
答案 0 :(得分:0)
这不是一个完整的答案,而是一些更正式的问题说明。
我认为这可以作为一个线性方程组来解决。让
NZ = {(i,j)|a(i,j) is not fixed to zero}
然后写:
sum( j | (i,j) ∈ NZ, a(i,j) * x(j) ) = b(i) ∀i
sum( i | (i,j) ∈ NZ, a(i,j)) = 1 ∀j
这只是a(i,j)
中的线性方程组。它可能不足(或过量)确定,并且可能是稀疏的。我认为这取决于如何解决它。可能将它们视为线性(或二次)编程问题中的约束。这将允许您添加一个目标(在系统不确定的情况下或过高的情况下–在这种情况下,请最小化平方偏差的总和或偏差的1范数。此外,我们可以在a(i,j)
上添加范围(例如,下限为零,上限为1)。因此,您可能正在寻找线性编程方法。
此问题有点像矩阵平衡。这用于来自不同来源的经济数据集,并且我们希望对这些数据进行调和以获得一致的数据集,以用于后续建模。