我正在尝试曲线拟合一个数据集,该数据集是从and Integration获得的,lmfit表示其中包含NaN值。
同一数据使用scipy_curvefit拟合,即超级错误。我正在尝试使用该库以获得更好的结果。
我试图将yData和xData更改为一些简单的数组(您将在下面看到),并遇到相同的错误!
from lmfit import Model
def poly(x, a1,a2,a3,a4,a5):
return a1+a2*x**a3+a4*x**a5
x=s
y=vrr
x=[0.,1.,2.,3.,5.,6.]
y=[4.,5.,6.,12.,3.,5.]
gmodel = Model(poly)
gmodel_parameters= gmodel.make_params()
gmodel_parameters['a1'].set(value=10)
gmodel_parameters['a2'].set(value=10)
gmodel_parameters['a3'].set(value=7)
gmodel_parameters['a4'].set(value=10)
gmodel_parameters['a5'].set(value=7)
result=gmodel.fit(x=x,data=y,params=gmodel_parameters)
plt.plot(x, y, 'k--')
plt.plot(x, result.best_fit, 'r-')
plt.show()
答案 0 :(得分:1)
适合指数时要小心。如果程序将此变量设置为小于零,则可能会出现NaN错误。阅读文档,尝试将min = 0添加到a3和a5作为优化选项。
https://lmfit.github.io/lmfit-py/model.html#the-model-class
祝你好运!