我正在使用optimize.leastsq来拟合数据。我想将拟合参数限制在某个范围内。在使用optimize.leastsq时可以定义界限吗?边界是用optimize.fmin_slsqp实现的,但我更喜欢使用optimize.leastsq。
发布于 2011-09-14 08:06:11
我认为处理边界的标准方法是当参数超出边界时,使要最小化的函数(残差)非常大。
import scipy.optimize as optimize
def residuals(p,x,y):
if within_bounds(p):
return y - model(p,x)
else:
return 1e6
p,cov,infodict,mesg,ier = optimize.leastsq(
residuals,p_guess,args=(x,y),full_output=True,warning=True)发布于 2011-09-18 05:05:43
我不久前才发现这个
http://code.google.com/p/nmrglue/source/browse/trunk/nmrglue/analysis/leastsqbound.py
它使用参数转换来施加框约束。它还计算参数估计的调整协方差矩阵。
BSD有许可证,但我还没试过。
发布于 2011-09-18 06:12:25
你可能会发现
https://lmfit.github.io/lmfit-py/对此很有用。它允许每个变量的上限/下限,并允许参数之间的代数约束。
https://stackoverflow.com/questions/7409694
复制相似问题