我已经使用Lmfit库完成了双重Guassian函数的拟合。
gmodel = Model(myDGauss)
result = gmodel.fit(yGauss, x=xGauss, I1=2.47,I2=2.63,sigma1=1.07,sigma2=1.15)
我已经使用fit_report()方法打印出适合报告:
print(result.fit_report())
我得到了下面显示的内容:
[[Fit Statistics]]
# fitting method = leastsq
# function evals = 76
# data points = 130
# variables = 4
chi-square = 0.00559033
reduced chi-square = 4.4368e-05
Akaike info crit = -1299.05274
Bayesian info crit = -1287.58260 [[Variables]]
[[Variables]]
I1: 0.74813688 +/- 0.01143576 (1.53%) (init = 2.475306)
I2: 0.23722309 +/- 0.01099214 (4.63%) (init = 2.638552)
sigma1: 1.23574890 +/- 0.00724975 (0.59%) (init = 1.070258)
sigma2: 0.57214098 +/- 0.01513481 (2.65%) (init = 1.157566)
我现在想做的是保存打印在某些变量中的fit_report的值。例如,我想将打印的I1
的值(0.74813688)放入变量valI1
中,该变量被初始化为0。
有人可以帮助我吗?谢谢
答案 0 :(得分:0)
在ModelResult.fit_report()
中打印的所有值都是result
变量的属性,该变量是一个ModelResult
实例。它具有许多属性和方法,如https://lmfit.github.io/lmfit-py/model.html#the-modelresult-class
例如,最适合的参数保存在result.params
中。如所述
https://lmfit.github.io/lmfit-py/parameters.html,这是一个有序词典,其键是各个参数的名称,值是具有许多属性的Parameter对象本身(请参见https://lmfit.github.io/lmfit-py/parameters.html#the-parameter-class)。
因此,要打印参数的最佳拟合值和标准误差,类似于fit_report()
,您可以执行以下操作:
for name, par in result.params.items():
print(" %s: value=%f +/- %f " % (name, par.value, par.stderr))
更简单,更直接的要求是:
valI1 = result.params['I1'].value