lmfitパッケージのパラメーターについて 2 つの質問があります。
1.
カスタム モデルのパラメーターの値を事前に設定する方法はありますか?
例えば。
def my_cust(x,A,b):
return A*x + b
def gaussian(x, amp, cen, wid):
return (1.2345*amp/(sqrt(2*pi)*wid)) * exp(-(x-cen)**2 /wid)
mod = Model(my_cust) + Model(gaussian)
pars = mod.make_params(A=11.78,b=25,amp=2000,cen=109.5,wid=17) #initialize all the parameters
results = mod.fit(y,pars,x=x)
たとえば、最後の 2 行目ではamp=2000
、パラメータを初期化しますamp
。組み込みモデルでこのパラメーターを修正したい場合(例: this one ):
params = model.make_params()
params['g1_amplitude'].set(2000, vary=False)
質問1
カスタムモデルのラインなどでパラメーターの値を2000に固定することはできますか?amp
mod.fit()
2.
以下のようなカスタム複合モデルにプレフィックスを割り当てようとしています:
cust_combination_mod = Model(my_cust, prefix='lin_') + Model(gaussian, prefix='g1_')
上記の行を試したところ、次のようになりました。
File "build\bdist.win-amd64\egg\lmfit\model.py", line 541, in fit
File "build\bdist.win-amd64\egg\lmfit\model.py", line 747, in fit
File "build\bdist.win-amd64\egg\lmfit\minimizer.py", line 1242, in minimize
File "build\bdist.win-amd64\egg\lmfit\minimizer.py", line 1072, in leastsq
File "C:\Python27\lib\site-packages\scipy\optimize\minpack.py", line 377, in leastsq
shape, dtype = _check_func('leastsq', 'func', func, x0, args, n)
File "C:\Python27\lib\site-packages\scipy\optimize\minpack.py", line 26, in _check_func
res = atleast_1d(thefunc(*((x0[:numinputs],) + args)))
File "build\bdist.win-amd64\egg\lmfit\minimizer.py", line 371, in __residual
File "build\bdist.win-amd64\egg\lmfit\minimizer.py", line 1432, in _nan_policy
ValueError: The input contains nan values
多くのカスタム モデルがある場合、mod.make_params()
(上記の 1. で示したように) のすべてのパラメーターを初期化するのは面倒な場合があります。この問題はここで議論されているようですが ( 1、2 )、複合モデルの個別のコンポーネントに接頭辞を実際に割り当てる方法は実際には示されていません。
質問2
で複合カスタム モデルにプレフィックスを割り当てることは可能lmfit
ですか?