Scipy:使用optimize.leastsq时拟合参数的界限

时间:2011-09-13 23:28:51

标签: python scipy

我使用optimize.leastsq来拟合数据。我想将拟合参数约束到一定范围。使用optimize.leastsq时是否可以定义边界?边界在optimize.fmin_slsqp中实现,但我更喜欢使用optimize.leastsq。

3 个答案:

答案 0 :(得分:6)

我认为处理边界的标准方法是在参数超出界限时使函数最小化(残差)非常大。

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)

答案 1 :(得分:3)

我刚刚发现这个

http://code.google.com/p/nmrglue/source/browse/trunk/nmrglue/analysis/leastsqbound.py

它使用参数转换来强加框约束。它还计算参数估计的调整后的协方差矩阵。

BSD获得许可,但我还没有尝试过。

答案 2 :(得分:0)

你可能会发现     https://lmfit.github.io/lmfit-py/ 对此很有用。它允许每个变量的上限/下限,并允许参数之间的代数约束。