使用scipy的curve_fit估计负指数参数的问题

时间:2017-02-14 15:16:08

标签: python pandas numpy scipy

我试图让scipy的curves_fit函数估算修改的负指数函数的参数。当我致电curve_fit并且我不知道原因时,我收到了错误。

该功能定义为:

def negative_exponential(x, carryover, asymptote, speed):
    return x[0] * carryover + asymptote * (1 - np.exp(-speed * x[1]))

当使用合理的参数

调用时,这似乎按预期工作

用于估计参数的数据存储在数据帧中。这是我用来调用curve_fit

的代码
x = df[["Sales_2015", "Calls_2016"]]
y = df["Sales_2016"]
popt, pcov = curve_fit(negative_exponential, x.values, y.values)
print (popt)

curve_fit函数会出现此错误

---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
C:\Users\steve\Anaconda3\lib\site-packages\pandas\indexes\base.py in get_loc(self, key, method, tolerance)
   2133             try:
-> 2134                 return self._engine.get_loc(key)
   2135             except KeyError:

我也尝试通过传递x.values和y.values来调用curve_fit。这也是一个错误。

另请注意,使用此数据估算OLS模型没有问题,例如

model = sm.OLS(y, x).fit()
model.summary()

这意味着我需要在传递给x之前对ycurve_fit做一些事情

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

问题是x和y的维度。转置数据帧系列修复了代码:

{TableName}