【发布时间】:2020-12-14 07:02:19
【问题描述】:
对于单个指数曲线,例如此处的图像 curve_fit for as single exponential curve 中所示,我可以使用 scipy.optimize.curve_fit 拟合数据。但是,我不确定如何实现对由多个指数曲线组成的类似数据集的拟合,如double exponential curves 所示。 我使用以下方法实现了对单曲线的拟合:
def exp_decay(x,a,r):
return a * ((1-r)**x)
x = np.linspace(0,50,50)
y = exp_decay(x, 400, 0.06)
y1 = exp_decay(x, 550, 0.06) # this is to be used to append to y to generate two curves
pars, cov = curve_fit(exp_decay, x, y, p0=[0,0])
plt.scatter(x,y)
plt.plot(x, exp_decay(x, *pars), 'r-') #this realizes the fit for a single curve
yx = np.append(y,y1) #this realizes two exponential curves (as shown above - double exponential curves) for which I don't need to fit a model to
有人可以帮助描述如何为两条曲线的数据集实现这一目标。我的实际数据集由多条指数曲线组成,但我认为如果我能实现两条曲线的拟合,我可能能够为我的数据集复制相同的曲线。这不能用 scipy 的 curve_fit 来完成;任何可行的实现都很好。
请帮忙!!!
【问题讨论】:
-
好消息/坏消息。如果您可以将一条曲线拟合到相似的数据(看起来可以),那么您可以拟合 N 条曲线。您显然(?)需要通过分离数据来分别拟合它们。所以……潜在的坏消息。如何在数据集中标记或区分来自单独曲线的数据?
-
@AirSquid 是的,我可以单曲线;但因为它是来自某些观察的连续数据集,所以分离数据不是一种选择。曲线是我需要找到合适的重复模式。这些曲线具有不同的数据点 - 不同的时期。感谢您的评论。
-
使用一阶导数标准分割数据集(曲线变化时一阶差值非常高),然后通过转移到原点或添加额外的滞后参数来应用单曲线拟合。最后组装结果。
-
好吧,您显然必须以某种方式分离不同曲线的数据。曲线拟合算法如何知道要拟合哪条曲线?建议您使用数据扩充您的帖子,或者发布一个新帖子。如果数据在您的示例中在您的 x 轴上间隔开,那么在寻找大跳跃或查看上面建议的导数时会有一些希望......这一切都取决于很多事情!
标签: python python-3.x machine-learning artificial-intelligence data-analysis