我使用下面的代码做了一个简单的最小二乘。最后,通过手工计算残差,我无法获得与scipy相同的值。因此,我想知道scipy如何计算残渣?
from scipy.linalg import lstsq
np.random.seed(30042019)
A = np.random.uniform(0, 500, (100, 2))
A = np.hstack((A, np.ones((100, 1))))
B = np.dot(A, [4, 5, -2])
X, residues, rank, s = lstsq(A, B)
print("X = ", X)
print("rank = ", rank)
print("residues = ", residues)
print("calc res =", ((np.dot(A, X) - B) ** 2).mean())
结果
X = [ 4. 5. -2.]
rank = 3
residues = 5.43023571273382e-24
calc res = 6.2083782381226065e-25
scipy残基的值和人工计算的残基的值不同。与等级有任何联系吗?