本文簡要介紹 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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。