本文簡要介紹 python 語言中 numpy.polynomial.hermite.hermfit
的用法。
用法:
polynomial.hermite.hermfit(x, y, deg, rcond=None, full=False, w=None)
Hermite 係列與數據的最小二乘擬合。
返回 Hermite 度數係列的係數度這是適合數據值的最小二乘y在點給出x.如果y是一維的,返回的係數也將是一維的。如果y是 2-D 多次擬合完成,每列一個y,並且得到的係數存儲在二維返回的相應列中。擬合多項式的形式為
其中 n 是度數。
- x: 數組, 形狀 (M,)
M 個采樣點的 x 坐標
(x[i], y[i])
。- y: 數組, 形狀 (M,) 或 (M, K)
樣本點的 y 坐標。通過傳入每列包含一個數據集的 2D-array,可以一次擬合多個共享相同 x 坐標的樣本點數據集。
- deg: int 或 1-D 數組
擬合多項式的次數。如果 deg 是單個整數,則所有直到並包括 deg'th 項的項都包含在擬合中。對於 NumPy 版本 >= 1.11.0,可以使用指定要包含的項的度數的整數列表來代替。
- rcond: 浮點數,可選
擬合的相對條件數。相對於最大奇異值小於此的奇異值將被忽略。默認值為 len(x)*eps,其中 eps 是浮點類型的相對精度,大多數情況下約為 2e-16。
- full: 布爾型,可選
開關確定返回值的性質。當它為 False(默認值)時,僅返回係數,當還返返回自奇異值分解的 True 診斷信息時。
- w: 數組樣,形狀(M,), 可選的
重量。如果不是 None,則權重
w[i]
適用於x[i]
處的未平方殘差y[i] - y_hat[i]
。理想情況下,選擇權重以使產品w[i]*y[i]
的誤差都具有相同的方差。使用 inverse-variance 加權時,請使用w[i] = 1/sigma(y[i])
。默認值為無。
- coef: ndarray,形狀(M,)或(M,K)
Hermite 係數從低到高排序。如果 y 是二維的,則 y 的 k 列中數據的係數在 k 列中。
- [residuals, rank, singular_values, rcond]: 列表
這些值僅在
full == True
時返回殘差 - 最小二乘擬合的殘差平方和
rank - 縮放的 Vandermonde 矩陣的數值等級
singular_values - 縮放範德蒙矩陣的奇異值
rcond - rcond 的值。
有關詳細信息,請參閱
numpy.linalg.lstsq
。
- RankWarning
最小二乘擬合中係數矩陣的秩不足。僅當
full == False
時才會引發警告。可以通過以下方式關閉警告>>> import warnings >>> warnings.simplefilter('ignore', np.RankWarning)
參數:
返回:
警告:
注意:
解決方案是使加權平方誤差之和最小化的 Hermite 級數 p 的係數
其中 是權重。這個問題是通過建立(通常)超定矩陣方程來解決的
其中 V 是 x 的加權偽 Vandermonde 矩陣,c 是要求解的係數,w 是權重,y 是觀測值。然後使用 V 的奇異值分解求解該方程。
如果某些奇異值V是如此之小以至於它們被忽略了,那麽
RankWarning
將發出。這意味著可能很難確定係數值。使用低階擬合通常會消除警告。這rcond參數也可以設置為小於其默認值的值,但結果擬合可能是虛假的並且有很大的舍入誤差貢獻。當數據可以近似時,使用 Hermite 級數的擬合可能最有用
sqrt(w(x)) * p(x)
,其中w(x)是 Hermite 重量。在這種情況下,重量sqrt(w(x[i]))
應與數據值一起使用y[i]/sqrt(w(x[i]))
.權重函數可用作hermweight
.參考:
維基百科,“Curve fitting”,https://en.wikipedia.org/wiki/Curve_fitting
1:
例子:
>>> from numpy.polynomial.hermite import hermfit, hermval >>> x = np.linspace(-10, 10) >>> err = np.random.randn(len(x))/10 >>> y = hermval(x, [1, 2, 3]) + err >>> hermfit(x, y, 2) array([1.0218, 1.9986, 2.9999]) # may vary
相關用法
- Python numpy hermite.hermfromroots用法及代碼示例
- Python numpy hermite.hermline用法及代碼示例
- Python numpy hermite.hermpow用法及代碼示例
- Python numpy hermite.hermx用法及代碼示例
- Python numpy hermite.hermmul用法及代碼示例
- Python numpy hermite.herm2poly用法及代碼示例
- Python numpy hermite.hermsub用法及代碼示例
- Python numpy hermite.hermdiv用法及代碼示例
- Python numpy hermite.hermdomain用法及代碼示例
- Python numpy hermite.hermadd用法及代碼示例
- Python numpy hermite.hermint用法及代碼示例
- Python numpy hermite.hermzero用法及代碼示例
- Python numpy hermite.hermone用法及代碼示例
- Python numpy hermite.hermtrim用法及代碼示例
- Python numpy hermite.hermder用法及代碼示例
- Python numpy hermite.hermvander用法及代碼示例
- Python numpy hermite.hermroots用法及代碼示例
- Python numpy hermite.hermval用法及代碼示例
- Python numpy hermite.hermmulx用法及代碼示例
- Python numpy hermite.poly2herm用法及代碼示例
- Python numpy hermite_e.hermediv用法及代碼示例
- Python numpy hermite_e.hermefromroots用法及代碼示例
- Python numpy hermite_e.hermeline用法及代碼示例
- Python numpy hermite_e.hermeint用法及代碼示例
- Python numpy hermite_e.hermeadd用法及代碼示例
注:本文由純淨天空篩選整理自numpy.org大神的英文原創作品 numpy.polynomial.hermite.hermfit。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。