如何解决使用lmfit曲线拟合后从拟合统计参数中提取变量
我正在使用 lmfit 根据我的数据绘制高斯拟合图。我只想提取一个可变参数(例如: I0 )并将其存储在一个数组中。 任何建议都会真正有帮助。 我在下面附上了我的示例代码:
def Gauss(x,I0,x0,sigma,Background):
return I0*exp((-(x-x0)**2)/(2*sigma**2))+Background
mod=Model(Gauss)
result=mod.fit(yData,x=xData,I0=1,x0=mean,sigma=sigma,Background=1)
result.plot()
plt.grid()
plt.xlabel('x,y,z distribution')
plt.ylabel('PL intensity')
basename=os.path.basename(file)
plt.title(basename)
print('The fit statistics for',basename)
print(result.fit_report())
[[Fit Statistics]]
# fitting method = leastsq
# function evals = 264
# data points = 30
# variables = 4
chi-square = 8379722.68
reduced chi-square = 322297.026
Akaike info crit = 384.203840
Bayesian info crit = 389.808629
[[Variables]]
I0: 6128.15928 +/- 343.334644 (5.60%) (init = 1)
x0: -5.1147e-07 +/- 3.1252e-08 (6.11%) (init = -4.039265e-07)
sigma: -7.4953e-07 +/- 6.0842e-08 (8.12%) (init = 9.136697e-07)
Background: 1730.50204 +/- 338.181818 (19.54%) (init = 1)
解决方法
阅读 lmfit 文档并浏览一些示例可能会有所帮助。在 SO 上,期望您会展示您尝试过的内容以及可能没有按预期工作的内容。
你说:
我想提取所有可变参数(例如: I0 )并根据我的数据绘制它并可视化我的拟合的误差条。
结果参数在 result.params
中,这是一个字典,其中包含参数名称的键和 lmfit.Parameter 的值,它将具有多个属性。
如果你只想要最合适的参数值,你可以试试
print(result.params.valuesdict())
有关更多信息,请参阅文档。
我不确定您所说的“根据我的数据绘制它并可视化我拟合的误差线”是什么意思。
你还说:
我还想为我的每个数据点计算可变参数并存储在一个数组中。
也许您的意思是您想要模型的数组值?如果是,则在 result.best_fit
中。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。