【发布时间】:2017-04-13 00:32:37
【问题描述】:
我有 2 个关于 lmfit 包中的参数的问题。
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)
例如倒数第二行,amp=2000 初始化参数amp。如果我想在内置模型中修复这个参数(例如this one):
params = model.make_params()
params['g1_amplitude'].set(2000, vary=False)
问题 1
是否可以修复参数amp 的值在mod.fit() 行或自定义 模型的其他位置中的2000?
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 中的复合自定义模型分配前缀?
【问题讨论】:
标签: python-2.7 curve-fitting lmfit