本文简要介绍 python 语言中 numpy.linalg.lstsq
的用法。
用法:
linalg.lstsq(a, b, rcond='warn')
返回线性矩阵方程的最小二乘解。
计算向量x近似解方程
a @ x = b
.方程可能是under-、well-或over-determined(即,线性独立的行数a可以小于、等于或大于其线性独立列的数量)。如果a是方的并且是满秩的,那么x(但对于舍入误差)是方程的“exact” 解。别的,x最小化欧几里得 2 范数 .如果有多个最小化解,则具有最小 2 范数的解 被退回。- a: (M, N) 数组
“Coefficient” 矩阵。
- b: {(M,), (M, K)} 数组
纵坐标或“dependent variable”值。如果 b 是二维的,则为 b 的 K 列中的每一列计算最小二乘解。
- rcond: 浮点数,可选
Cut-off a 的小奇异值的比率。出于排名确定的目的,如果奇异值小于 rcond 乘以 a 的最大奇异值,则奇异值被视为零。
- x: {(N,), (N, K)} ndarray
最小二乘解。如果 b 是二维的,则解位于 x 的 K 列中。
- residuals: {(1,), (K,), (0,)} ndarray
残差平方和:每列的平方欧几里得 2 范数
b - a @ x
.如果排名ais < N 或 M <= N,这是一个空数组。如果b是一维的,这是一个 (1,) 形状的数组。否则形状为 (K,)。- rank: int
矩阵 a 的秩。
- s: (min(M, N),) ndarray
a的奇异值。
- LinAlgError
如果计算不收敛。
参数:
返回:
抛出:
注意:
如果 b 是矩阵,则所有数组结果都以矩阵形式返回。
例子:
通过一些嘈杂的 data-points 拟合一条线
y = mx + c
:>>> x = np.array([0, 1, 2, 3]) >>> y = np.array([-1, 0.2, 0.9, 2.1])
通过检查系数,我们看到这条线应该有大约 1 的梯度,并且在或多或少 -1 处切割 y 轴。
我们可以将线方程改写为
y = Ap
,其中A = [[x 1]]
和p = [[m], [c]]
.现在使用lstsq
解决p:>>> 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.0 -0.95) # may vary
将数据与拟合线一起绘制:
>>> import matplotlib.pyplot as plt >>> _ = plt.plot(x, y, 'o', label='Original data', markersize=10) >>> _ = plt.plot(x, m*x + c, 'r', label='Fitted line') >>> _ = plt.legend() >>> plt.show()
相关用法
- Python numpy linalg.svd用法及代码示例
- Python numpy linalg.pinv用法及代码示例
- Python numpy linalg.eigh用法及代码示例
- Python numpy linalg.tensorinv用法及代码示例
- Python numpy linalg.LinAlgError用法及代码示例
- Python numpy linalg.matrix_rank用法及代码示例
- Python numpy linalg.solve用法及代码示例
- Python numpy linalg.det用法及代码示例
- Python numpy linalg.cond用法及代码示例
- Python numpy linalg.inv用法及代码示例
- Python numpy linalg.eig用法及代码示例
- Python numpy linalg.norm用法及代码示例
- Python numpy linalg.slogdet用法及代码示例
- Python numpy linalg.multi_dot用法及代码示例
- Python numpy linalg.tensorsolve用法及代码示例
- Python numpy linalg.qr用法及代码示例
- Python numpy linalg.matrix_power用法及代码示例
- Python numpy linalg.cholesky用法及代码示例
- Python numpy linalg.eigvals用法及代码示例
- Python numpy linalg.eigvalsh用法及代码示例
- Python numpy linspace用法及代码示例
- Python numpy lib.NumpyVersion用法及代码示例
- Python numpy lib.Arrayterator用法及代码示例
- Python numpy legendre.legint用法及代码示例
- Python numpy laguerre.lagone用法及代码示例
注:本文由纯净天空筛选整理自numpy.org大神的英文原创作品 numpy.linalg.lstsq。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。