我正在尝试让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()这意味着在传递给curve_fit之前,我需要对x和y执行一些操作
有什么建议吗?
发布于 2017-02-15 01:02:15
问题出在x和y的维度上。调换dataframe序列修复了代码:
x = d4[["Sales_2015", "Calls_2016"]].transpose().as_matrix()
y = d4["Sales_2016"].transpose().as_matrix()https://stackoverflow.com/questions/42229747
复制相似问题