【发布时间】: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