numpy用于`numpy.linalg.lstsq`的算法

时间:2017-06-12 20:54:51

标签: python algorithm numpy

我正在做一些线性代数,我注意到numpy.linalg.lstsq()正在做我需要的事情。我假设np.linalg.lstsq()正在使用LAPACK中的内置算法。

numpy.linalg.lstsq使用什么算法?

对于某些背景,假设我有一个矩阵A,其列数多于行数。例如:

import numpy
A = numpy.random.randn(4, 5)
print(numpy.linalg.lstsq(A, A))

结果打印值恰好等同于以下公式:

A.T.dot(np.linalg.inv(A.dot(A.T))).dot(A)

如果我按上述方式计算numpy.linalg.lstsq(A, A),我希望得到单位矩阵。但是,它给了另一个价值。

numpy.linalg.lstsq显然没有使用linear regression的公式,因为np.linalg.inv(A.T.dot(A))不可计算,因为A.T.dot(A)是单数。

您可以在math.stackexchange.com上的my post看到我正在寻找另一种计算上述算法的方法。

编辑:我不是在寻找一种计算单位矩阵的方法。我希望复制numpy.linalg.lstsq正在使用的LAPACK公式。请查看我上面的旧帖子以获取背景信息。

0 个答案:

没有答案