Python 有人能详细解释linalg.lstsq的返回吗?

Python 有人能详细解释linalg.lstsq的返回吗?,python,numpy,least-squares,Python,Numpy,Least Squares,尽管有人提出了这个建议。我仍然觉得很难理解,因为它不是很详细 x:{N,N,K}ndarray 最小二乘解。如果b是二维的,则解为 x的K列 残差:{1,K,0,}ndarray 残差之和;b中每列的平方欧氏2-范数- a*x。如果a的秩

尽管有人提出了这个建议。我仍然觉得很难理解,因为它不是很详细

x:{N,N,K}ndarray

最小二乘解。如果b是二维的,则解为 x的K列

残差:{1,K,0,}ndarray

残差之和;b中每列的平方欧氏2-范数-
a*x。如果a的秩 让我们一次看一个输出

>>> x, residuals, rank, s = np.linalg.lstsq(A, y, rcond=None)
x是A@x=y的最小二乘解,因此它最小化了np.linalg.normA@x-y**2:

其他输出用于告诉您此解决方案有多好,以及它对数值错误的敏感性有多大

残差是A@x和y之间不匹配的平方范数:

秩是一个变量的秩:

s包含A的奇异值


你熟悉数学概念吗?

这些元组是输入和输出的可能形状。 在您的示例中,A.shape=4,2和y.shape=4,。 查看文档,M=4,N=2,我们正在处理没有K的情况。 因此,输出的形状应该是x.shape=N,=2,residuals.shape=1,s.shape=minM,N,=2

让我们一次看一个输出

>>> x, residuals, rank, s = np.linalg.lstsq(A, y, rcond=None)
x是A@x=y的最小二乘解,因此它最小化了np.linalg.normA@x-y**2:

其他输出用于告诉您此解决方案有多好,以及它对数值错误的敏感性有多大

残差是A@x和y之间不匹配的平方范数:

秩是一个变量的秩:

s包含A的奇异值

你熟悉数学概念吗

>>> x, residuals, rank, s = np.linalg.lstsq(A, y, rcond=None)
>>> A.T @ (A @ x - y)
array([1.72084569e-15, 2.16493490e-15])
>>> np.linalg.norm(A @ x - y)**2
0.04999999999999995
>>> residuals[0]
0.04999999999999971
np.linalg.matrix_rank(A)
2
>>> rank
2
>>> np.linalg.svd(A, compute_uv=False)
array([4.10003045, 1.09075677])
>>> s
array([4.10003045, 1.09075677])