我正在做一些线性代数,我注意到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公式。请查看我上面的旧帖子以获取背景信息。