【问题标题】:extrapolate pandas dataframe with lmfit用 lmfit 推断 pandas 数据框
【发布时间】:2020-04-01 06:09:58
【问题描述】:

我正在尝试推断我的数据

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()  

定义here

您可以将此复合模型应用于其他数据集,或评估 在 x 的其他值下的模型。您可能希望这样做以提供更好或 更粗的数据点间距,或将模型外推到 拟合范围。这可以通过以下方式完成:

xwide = np.linspace(-5, 25, 3001) 预测 = mod.eval(x=xwide)

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

那么,我怎样才能把extrapolate的数据,装上lmfit呢?

【问题讨论】:

    标签: python pandas extrapolation


    【解决方案1】:

    你可能想要使用

     pred = result.eval(x=x_pre)
    

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

    【讨论】:

      猜你喜欢
      • 2016-03-13
      • 2016-05-02
      • 2021-05-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多