2024-05-15 02:06:08 发布
网友
我正在使用optimize.leatsq来拟合数据。我想将拟合参数限制在一定范围内。使用optimize.leatsq时是否可以定义界限?边界在optimize.fmin_slsqp中实现,但我更喜欢使用optimize.leatsq。
您可能会发现https://lmfit.github.io/lmfit-py/ 这很有用。它允许每个变量的上下界,并允许参数之间的代数约束。
我不久前才发现的
http://code.google.com/p/nmrglue/source/browse/trunk/nmrglue/analysis/leastsqbound.py
它使用参数转换来施加框约束。它还计算参数估计的调整协方差矩阵。
BSD有执照,但我还没试过。
我认为处理边界的标准方法是使函数在参数超过边界时最小化(残差)。
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)
您可能会发现
https://lmfit.github.io/lmfit-py/ 这很有用。它允许每个变量的上下界,并允许参数之间的代数约束。
我不久前才发现的
http://code.google.com/p/nmrglue/source/browse/trunk/nmrglue/analysis/leastsqbound.py
它使用参数转换来施加框约束。它还计算参数估计的调整协方差矩阵。
BSD有执照,但我还没试过。
我认为处理边界的标准方法是使函数在参数超过边界时最小化(残差)。
相关问题 更多 >
编程相关推荐