【问题标题】:LMFIT - Extrackt variables form FitfunctionLMFIT - 从 Fitfunction 中提取变量
【发布时间】:2018-10-10 12:21:52
【问题描述】:

我写了一个短代码来拟合来自光学发射规范的光谱。 因此,我在 Peak 中安装了 VoigtModel,在背景中安装了 LinearModel。 像这样的:

mod=VoigtModel()
pars = mod.guess(y, x=x)
out = mod.fit(y, pars, x=x)`

mod=LinearModel() 
pars = mod.guess(y, x=x)
func=mod.fit(y,pars,x=x)`

现在我想计算线性函数和 voigt 峰值函数之间的面积。有谁知道这是怎么做到的吗。 我的想法是重建功能并执行集成。但我不知道如何从 fit_report() 中提取变量(斜率、截距、伽马、西格玛……)? 谢谢 BR 数学

【问题讨论】:

  • 你可以试试 func.best_values 或 mod.best_values - 这应该返回一个字典,其中参数名称作为键,它们的值作为字典值。您也可以尝试 func.plot() 或 mod.plot() 来可视化您的适合度。

标签: python curve-fitting data-fitting model-fitting lmfit


【解决方案1】:

我不完全确定您要的是什么,但您可以从拟合结果 outfunc 中提取一些内容(这是一个奇怪的名称来给出拟合结果,但是好的):

ModelResult 有:

  • params:最佳拟合参数的有序字典。键为参数名,值为lmfit.Parameter对象,属性为valuestderrmaxmincorrel等。

  • best_values:一个简单的字典,参数名称作为键,最适合的值作为值。

  • best_fit:最佳拟合模型的ndarray。

结果的更多属性描述在http://lmfit.github.io/lmfit-py/model.html#modelresult-attributes

所以,你想要的可能是这样的:

for parname, param in out.params.items():
    print("%s = %f +/- %f " % (parname, param.value, param.stderr))

这基本上就是fit_report 方法的作用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-22
    • 2020-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多