首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用scipy的curve_fit估计负指数参数的问题

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

Stack Overflow用户
提问于 2017-02-14 23:16:08
回答 1查看 131关注 0票数 0

我正在尝试让scipy的curves_fit函数来估计一个修正的负指数函数的参数。当我调用curve_fit时,我收到了错误,我不知道为什么。

该函数的定义如下:

代码语言:javascript
复制
def negative_exponential(x, carryover, asymptote, speed):
    return x[0] * carryover + asymptote * (1 - np.exp(-speed * x[1]))

当使用合理的参数进行调用时,这似乎可以按预期工作

用于估计参数的数据存储在数据帧中。下面是我用来调用curve_fit的代码

代码语言:javascript
复制
x = df[["Sales_2015", "Calls_2016"]]
y = df["Sales_2016"]
popt, pcov = curve_fit(negative_exponential, x.values, y.values)
print (popt)

curve_fit函数会给出此错误

代码语言:javascript
复制
---------------------------------------------------------------------------
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模型没有问题,例如

代码语言:javascript
复制
model = sm.OLS(y, x).fit()
model.summary()

这意味着在传递给curve_fit之前,我需要对xy执行一些操作

有什么建议吗?

EN

回答 1

Stack Overflow用户

发布于 2017-02-15 01:02:15

问题出在x和y的维度上。调换dataframe序列修复了代码:

代码语言:javascript
复制
x = d4[["Sales_2015", "Calls_2016"]].transpose().as_matrix()
y = d4["Sales_2016"].transpose().as_matrix()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42229747

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档