在 Python 中獲取多項式對資料的最小二乘擬合
要獲取多項式對資料的最小二乘擬合,請在 Python Numpy 中使用 polynomial.polyfit()。該方法返回從低到高排序的多項式係數。如果 y 是二維的,則 coef 中第 k 列的係數表示對 y 的第 k 列中的資料進行的多項式擬合。引數 x 是 M 個樣本(資料)點 (x[i], y[i]) 的 x 座標。
引數 y 是樣本點的 y 座標。透過為 y 傳遞包含每個資料集中一列的二維陣列,可以(獨立地)在一個對 polyfit 的呼叫中擬合共享相同 x 座標的多個樣本點集。引數 deg 是擬合多項式的次數。如果 deg 是一個單個整數,則擬閤中將包含直至幷包括 deg 次項的所有項。
引數 rcond 是擬合的相對條件數。相對於最大奇異值,小於 rcond 的奇異值將被忽略。預設值為 len(x)*eps,其中 eps 是平臺浮點型別的相對精度,在大多數情況下約為 2e-16。引數 full 是確定返回值性質的開關。當為 False(預設值)時,僅返回係數;當為 True 時,還將返回來自奇異值分解的診斷資訊。
引數 w 是權重。如果非 None,則權重 w[i] 應用於 x[i] 處未平方殘差 y[i] - y_hat[i]。理想情況下,權重的選擇應使 w[i]*y[i] 的乘積誤差都具有相同的方差。當使用逆方差加權時,使用 w[i] = 1/sigma(y[i])。預設值為 None。
步驟
首先,匯入所需的庫 -
import numpy as np from numpy.polynomial import polynomial as P
x 座標 -
x = np.linspace(-1,1,51)
顯示 x 座標 -
print("X Co-ordinate...\n",x)y 座標 -
y = x**3 - x + np.random.randn(len(x))
print("\nY Co-ordinate...\n",y)要獲取多項式對資料的最小二乘擬合,請在 Python Numpy 中使用 polynomial.polyfit() -
c, stats = P.polyfit(x,y,3,full=True)
print("\nResult...\n",c)
print("\nResult...\n",stats)示例
import numpy as np
from numpy.polynomial import polynomial as P
# The x-coordinate
x = np.linspace(-1,1,51)
# Display the x-coordinate
print("X Co-ordinate...\n",x)
# The y-coordinate
y = x**3 - x + np.random.randn(len(x))
print("\nY Co-ordinate...\n",y)
# To get the least-squares fit of a polynomial to data, use the polynomial.polyfit() in Python Numpy
# The method returns the Polynomial coefficients ordered from low to high. If y was 2-D, the coefficients in column k of coef represent the polynomial fit to the data in y’s k-th column.
c, stats = P.polyfit(x,y,3,full=True)
print("\nResult...\n",c)
print("\nResult...\n",stats)輸出
X Co-ordinate... [-1. -0.96 -0.92 -0.88 -0.84 -0.8 -0.76 -0.72 -0.68 -0.64 -0.6 -0.56 -0.52 -0.48 -0.44 -0.4 -0.36 -0.32 -0.28 -0.24 -0.2 -0.16 -0.12 -0.08 -0.04 0. 0.04 0.08 0.12 0.16 0.2 0.24 0.28 0.32 0.36 0.4 0.44 0.48 0.52 0.56 0.6 0.64 0.68 0.72 0.76 0.8 0.84 0.88 0.92 0.96 1. ] Y Co-ordinate... [ 0.24282445 -0.48320773 -1.18068109 -0.48486683 0.80514762 0.48976259 0.31363813 -0.03382685 -0.92334611 0.86835062 0.24661201 0.9790978 0.03782101 0.12213365 -1.37248029 1.99891304 -0.09825977 1.74524931 0.70560858 0.15516069 0.69169705 0.76957712 -1.21919676 1.50064825 1.32101339 -2.51479992 -0.28998783 -1.24293076 0.45927699 -0.53484746 0.50455341 -0.06351788 -2.69585303 -0.46833578 1.4924168 -2.42374146 -1.91934499 -1.36311466 -1.23946547 -1.56822005 -0.79648036 1.58269324 -0.53682862 -0.90861958 -0.28174461 -0.10775622 0.58535687 1.06373501 -2.28991738 2.01597286 -0.75841069] Result... [-0.17198829 -1.84107674 0.09439374 2.39030912] Result... [array([60.43653521]), 4, array([1.38446749, 1.32119158, 0.50443316, 0.28853036]), 1.1324274851176597e-14]
廣告
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP