用lmfit外推pandas数据帧



我正在尝试推断我的数据

14  , 18   , 38   , 57   , 100  , 130  , 191
18  , 26   , 48   , 74   , 79   , 130  , 165
3   , 3    , 3    , 3    , 3    , 3    , 6  
323 , 470  , 655  , 889  , 1128 , 1701 , 203
0   , 0    , 0    , 0    , 1    , 1    , 1  
977 , 1261 , 1766 , 2337 , 3150 , 3736 , 433
9   , 13   , 25   , 33   , 58   , 84   , 120

作为:

import matplotlib.pyplot as plt
import numpy as np
import pandas
from lmfit import Model
from lmfit.models import ExponentialModel, LorentzianModel, PolynomialModel
from pandas.plotting import scatter_matrix

names = ["A", "B", "C", "D", "E", "F", "G"]
data = (np.genfromtxt("trial.dat", delimiter=','))
dataset = pandas.DataFrame(data=data.T, columns=names)
x=dataset.index.values
x_pre=np.linspace(0,10, 10)
print(x_pre)
model = PolynomialModel(5)
for name in names:
print(name)
color = next(plt.gca()._get_lines.prop_cycler)['color']
params = model.guess(dataset[name], x=x)
result = model.fit(dataset[name], params, x=x)
plt.plot(dataset.index.values, dataset[name], 'o', color=color, label=name)
#  plt.plot(dataset.index.values, result.best_fit, '-', color=color)
pred = model.eval(x=x_pre)
print(pred)
#  print(result.fit_report())
plt.legend(loc='best')
plt.show()  

如这里定义的

您可以将此复合模型应用于其他数据集,或者评估模型的其他值为x。您可能希望这样做以给出更精细的或数据点的粗间距,或在适用范围。这可以通过以下方式完成:

xwide=np.linspace(-5,253001(预测=mod.eval(x=xwide(

但是,这不起作用,因为pred只返回0

那么,我如何用lmfit来拟合extrapolate的数据呢?

您可能想要使用

pred = result.eval(x=x_pre)

也就是说,您希望使用拟合的结果,而不是模型本身。

相关内容

  • 没有找到相关文章

最新更新