2016-11-04 39 views
0

試圖執行曲線擬合上的功能,採用SciPy的curve_fit:添加邊界來curve_fit:位置參數誤差

param_bounds=((-np.inf,-np.inf,0),(np.inf,np.inf,1)) 
OneCyParams, extras = curve_fit(func,xdata,ydata,bounds=param_bounds) 

產生的誤差:

453  if weights is None: 
    454   def func_wrapped(params): 
--> 455    return func(xdata, *params) - ydata 
    456  else: 


    457   def func_wrapped(params): 

TypeError: OneCycle() takes 2 positional arguments but 4 were given 

OneCycle是函數我很合適。

如果刪除邊界參數,則此錯誤消失。我究竟做錯了什麼?

+1

你能展示如何定義模型函數'func'嗎?它看起來像'func'被寫入參數列表中,而不是每個參數的單獨參數。 –

+0

'DEF FUNC(辛,P1): modelx =(((辛** P1)/((辛** P1)+(1 - 辛)** P1))) 返回modelx' – DataOR

+1

哎呀,我看到我的錯誤。這些參數界限適用於具有三個參數的以下函數。我只是毫不猶豫地複製它而不記得第一個函數的參數較少。我認真盯着這個錯誤一個小時沒有意識到。 謝謝! – DataOR

回答

1

這個錯誤是因爲相關的func只有一個參數。

一旦param_bounds被適當調整,問題就解決了。