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

尽管提供了linalg.lstsq document。我仍然很难理解,因为它不够详细。

x:{(N,),(N,K)} ndarray

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

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

残差之和; b中每列的平方欧几里德2-范数- 斧头。如果a的秩为

rank:整数

矩阵a的等级。

s:(min(M,N),)ndarray

a的奇异值。

我试图观察输出。但是我只知道排名是2。对于其余的,我不知道为什么。

x = np.array([0,1,2,3])
y = np.array([-1,0.2,0.9,2.1])
A = np.vstack([x,np.ones(len(x))]).T
print(A)
print('-------------------------')
print(np.linalg.lstsq(A,y,rcond=None))

给予

[[0. 1.]
 [1. 1.]
 [2. 1.]
 [3. 1.]]
-------------------------
(array([ 1.,-0.95]),array([0.05]),array([4.10003045,1.09075677]))

我不明白在文档中元组“((N,),(N,K),(1,),(K,),(0,),(M,N)”的含义

例如,np.linalg.lstsq(A,rcond=None)[0]将是array([ 1.,-0.95])与{{N,),(N,K)}有什么关系?

linian000 回答:有人能详细解释linalg.lstsq的返回吗?

这些元组是输入和输出的可能形状。 在您的示例中,y.shape = (4,)M = 4。 查看文档N = 2K,我们正在处理没有x.shape = (N,) = (2,)的案件。 因此,输出的形状应为residuals.shape = (1,)s.shape = (min(M,N),)>>> x,residuals,rank,s = np.linalg.lstsq(A,y,rcond=None)

让我们一次查看一个输出

x

A @ x = ynp.linalg.norm(A @ x - y)**2的最小二乘解,因此它最小化了>>> A.T @ (A @ x - y) array([1.72084569e-15,2.16493490e-15])

residuals

那里的其他输出告诉您该解决方案有多好,以及它对数值错误的敏感程度。

A @ xy>>> np.linalg.norm(A @ x - y)**2 0.04999999999999995 >>> residuals[0] 0.04999999999999971 之间不匹配的平方范数:

rank

Anp.linalg.matrix_rank(A) 2 >>> rank 2 的排名:

s

A包含>>> np.linalg.svd(A,compute_uv=False) array([4.10003045,1.09075677]) >>> s array([4.10003045,1.09075677]) 的奇异值

event == 1

您熟悉数学概念吗?

本文链接:https://www.f2er.com/2708215.html

大家都在问