linalg.lstsq
功能描述
返回线性矩阵方程的最小二乘解。
该方程可能未确定、良好或过度确定(即a的线性独立行数可以小于、等于或大于其线性独立列数)。如果a是平方且为全秩,则x(但对于舍入误差)是等式的“精确”解。否则,x最小化欧几里得2范数。如果有多个最小化解,则返回具有最小2范数的解。
必选输入参数
参数名  | 
类型  | 
说明  | 
|---|---|---|
a  | 
(M, N) array_like  | 
系数矩阵。  | 
b  | 
{(M,), (M, K)} array_like  | 
纵轴或因变量值。如果b是二维的,则为b的每个K列计算最小二乘解。  | 
可选输入参数
参数名  | 
类型  | 
默认值  | 
说明  | 
|---|---|---|---|
rcond  | 
float  | 
None  | 
a小奇异值的截止比。为了确定秩的目的,如果奇异值小于rcond乘以a的最大奇异值,则将其视为零。  | 
返回数据
名称  | 
类型  | 
说明  | 
|---|---|---|
x  | 
{(N,),(N,K)} ndarray  | 
最小二乘解。如果b是二维的,则解在x的K列中。  | 
residuals  | 
{(1,), (K,), (0,)} ndarray  | 
平方残差之和:b中每列的平方欧几里得2范数-a @ x。如果a的秩是<N或M <= N,这是一个空数组。如果b是一维的,这是一个(1,)形状数组。否则形状是(K,)。  | 
rank  | 
int  | 
矩阵a的秩。  | 
s  | 
(min(M, N),) ndarray  | 
a的奇异值。  | 
示例
>>> import numpy as np
>>> # y = mx + c
>>> x = np.array([0,1,2,3])
>>> y = np.array([-1,0.2,0.9,2.1])
>>> 
>>> # 令 y = Ap, 其中 A = [[x1]], p = [[m], [c]]
>>> A = np.vstack([x, np.ones(len(x))]).T
>>> A
array([[0., 1.],
       [1., 1.],
       [2., 1.],
       [3., 1.]])
>>> 
>>> m, c = np.linalg.lstsq(A, y, rcond=None)[0]
>>> m, c
(1.0000000000000002, -0.9499999999999996)
>>>
父主题: 线性代数函数