【发布时间】:2019-05-29 10:54:01
【问题描述】:
我正在尝试对我从积分中获得的数据集进行曲线拟合,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()
【问题讨论】:
-
我看到您正在将
s和vrr值分配给x和y。你能提供一些关于这些的信息吗(我的意思是s和vrr)?特别是,有哪些类型,可能是print(s, vrr)? -
@pmarcol Ofc,但请注意,我将 x 和 y 重新分配给了简单的数组。
len(s),len(vrr),type(s),type(vrr)分别给出(12000, 12000, numpy.ndarray, numpy.ndarray)并且每个元素都是浮点数(我已经用它们做了图表,它们是集成的结果,如帖子中所述:)) -
这在我看来是初始参数估计。在不进行任何其他更改的情况下,尝试使用这些值进行初始参数估计:a1 = 3.5E+00, a2 = -8.5E+01, a3 = 1.5E+00, a4 = 8.7E+01, a5 = 1.5E+00
-
@JamesPhillips 这确实是模型/参数问题。问题是,合身非常糟糕。它和 Curve_Fit 一样糟糕 :(-正如我在下面发布的那样-
-
这似乎没有使用您的代码示例中的数据,请您发布您引用的数据吗?
标签: python curve-fitting lmfit