簡體   English   中英

numpy.polyfit給出空殘差數組

[英]numpy.polyfit gives empty residuals array

我使用numpy.polyfit將二階多項式擬合到一組數據

fit1, fit_err1, _, _, _ = np.polyfit(xint[:index_max], yint[:index_max], 2, full=True)

對於我的數據的一些例子,變量fit_err1是空的雖然擬合成功,即fit1不為空!

有人知道在這種情況下空殘余是什么意思嗎? 謝謝!

編輯:一個示例數據集:

x = [-488., -478., -473.]
y = [ 0.02080881,  0.03233648,  0.03584448]

fit1, fit_err1, _, _, _ = np.polyfit(x, y, 2, full=True)

結果:

fit1 = [ -3.00778818e-05  -2.79024663e-02  -6.43272769e+00]
fit_err1 = []

我知道將二階多項式擬合到三個點的集合並不是很有用,但是我仍然期望函數要么發出警告,要么(因為它實際上確定了擬合)返回實際殘差,或兩者(如“這是剩余的,但你的條件很差!”)。

正如@Jaime所指出的,如果你有三個點,那么二階多項式將完全適合它。 和你的觀點是錯誤應該是相當0不是一個空數組是有道理的,但是這是當前行為np.linalg.lstsq這也正是np.polyfit所纏繞

我們可以測試這種行為做y = a*x**0 + b*x**1 + c*x**2方程的最小二乘擬合,我們知道答案應該是a=0, b=0, c=1

np.linalg.lstsq([[1, 1 ,1], [1, 2, 4], [1, 3, 9]], [1, 4, 9])
#(array([ -3.43396424e-15,   3.88578059e-15,   1.00000000e+00]),
# array([], dtype=float64),
# 3,
# array([ 10.64956309,   1.2507034 ,   0.15015641]))

我們可以看到第二個輸出是一個空數組。 這打算像這樣工作

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM