2016-11-04 13 views
0

scipyのダウンロード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

モデル関数funcntion funcntineがどのように定義されているかを表示できますか? 'func'は、各パラメータの個別の引数ではなく、パラメータのリストを取り込むように書かれているようです。 –

+0

'DEF FUNC(XIN、P1): modelx =(((XIN ** P1)/((XIN ** P1)+(1 - XIN)** P1))) 戻りmodelx' – DataOR

+1

おっと、私は間違いを見ます。これらのパラメータ境界は、3つのパラメータを有する次の関数に対するものである。私は、最初の関数がより少ないパラメータしか持たないことを覚えていなくても、それを気にせずにコピーしました。私は真剣にこのエラーを気付かずに1時間見つめた。 ありがとう! – DataOR

答えて

1

このエラーは、関連するfuncに1つのパラメータしかないためです。

param_boundsが適切に調整されたら、問題は解決されました。

関連する問題