首页 > 解决方案 > lmfit 指数模型根本不适合

问题描述

我正在尝试将一个非常简单的数据拟合为:

81
9
2
27
4
0
15
1
0
11
1
1
37
0
0
27
5
1
58
3
0
78
0
0
67
0
3

使用lmfit如下图。

import itertools

import matplotlib
import matplotlib.mlab as mlab
import matplotlib.pyplot as plt
import numpy as np
from lmfit.models import (ExpressionModel, GaussianModel, ExponentialModel)

with open('result.dat') as fin:
  data = np.genfromtxt(itertools.islice(fin, 0, None, 3),
                       delimiter=',',
                       dtype='int')
data = np.cumsum(data)
print(data)
x = (np.linspace(0, len(data), len(data)))
model = ExponentialModel()
params = model.guess(data, x=x)
result = model.fit(data, params, x=x)
plt.plot(x, data, '.')
plt.plot(x, result.best_fit)
plt.show()
print(params)

我得到的情节是: 结果

我不知道为什么指数拟合失败得如此悲惨。请问有什么想法吗?注意:切片是因为我每第三排都拿。

标签: pythonlmfit

解决方案


推荐阅读