0
我打算用長度爲54的兩個numpy陣列y1
和y2
做一個簡單的線性擬合。功能定義如下:scipy curve_fit容易線性擬合失敗?
def f(x,b):
return b*x
的數據在這裏繪製:
popt, pcov = scop.curve_fit(f,y2,y1) # yes y1 and y2 are in right order
結果::popt = 1., pcov = inf
我
然後我試圖通過擬合試用p0 = -833
,即i或多或少的結果應該是,但它給了我popt = -833, pcov = inf
。
我試圖用一個樣本函數的一些樣本數據:
x = np.array(range(10))
y = x**2 + 3
def fu(x,b):
return x**2 + b
po, pc = scop.curve_fit(fu,x,y)
print po, pc
結果僅僅是罰款:3和2e-33
有誰有一個想法,到什麼地方出了錯與第一審判?我還沒有找到任何有用或連接到我的問題...
您是否檢查過您的數據是否包含任何NaN或無限值? –
是的,有NaNs。 curve_fit沒有NaN處理程序?有沒有解決辦法? – Robert
從[文檔](https://docs.scipy.org/doc/scipy-0.16.0/reference/generated/scipy.optimize.curve_fit.html#scipy-optimize-curve-fit):「'check_finite' :bool,可選 如果爲True,請檢查輸入數組是否包含nans infs,並且如果它們出現則引發ValueError。如果輸入數組包含nans,則將此參數設置爲False可能會靜靜地產生無意義的結果。 「 – wflynny