【问题标题】:ZeroDivisionError in using statsmodels Holt Simple Forecasting with TrendZeroDivisionError 使用 statsmodels Holt 简单预测与趋势
【发布时间】:2019-12-11 00:18:24
【问题描述】:

我正在尝试使用 Holt 的线性方法来预测一些数据。
- 创建了一些数据
- 将其分为训练和测试
- 训练模型
- 预测
- 绘图

除非我想用 7 元素训练集运行程序,否则效果很好。如果我以其他方式划分数据,则可以使用。

使用:windows10、Anaconda、Spyder、python3.7

from statsmodels.tsa.holtwinters import Holt
import matplotlib.pyplot as plt
import pandas as pd 

data= [50, 48, 47, 45, 43, 40, 38, 35, 33, 32, 30, 28, 27, 26, 25 ]
df= pd.DataFrame(data)

#          working       #      throwing error   
#    for 2<a<7 & 7<a<14  #        for a=7  ONLY
############################################################
df_train= df[:a]         #     df_train= df[:a]  
df_test=  df[a:]         #     df_test=  df[a:]   
model = Holt(df_train).fit(smoothing_level=1, smoothing_slope=1)  # this is throwing error
preted = model.forecast(steps= len(df_test))

plt.plot(df,'-o', preted, '--or')`

文件 "C:\ProgramData\Anaconda3\lib\site-packages\statsmodels\tsa\holtwinters.py", 第 889 行,合适 优化=优化)
文件 "C:\ProgramData\Anaconda3\lib\site-packages\statsmodels\tsa\holtwinters.py", 第 594 行,合适 use_boxcox=use_boxcox, lamda=lamda, remove_bias=remove_bias)
文件 "C:\ProgramData\Anaconda3\lib\site-packages\statsmodels\tsa\holtwinters.py", 第 735 行,在 _predict 中 aicc = aic + (2 * (k + 2) * (k + 3)) / (self.nobs - k - 3)

ZeroDivisionError: 除以零

【问题讨论】:

    标签: python python-3.x statsmodels forecasting


    【解决方案1】:

    这是 statsmodels 0.9.0 版的问题,最新的 statsmodels 0.10.1 版没有问题。此外,conda 默认安装版本 0.9.0。要解决问题,请使用管理员权限打开 Anaconda Prompt 并键入:

    conda remove statsmodels
    conda install statsmodels=0.10.1
    

    (它可以删除一些其他的包,但你可以稍后安装它们)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-19
      • 2020-09-17
      • 1970-01-01
      • 2018-09-17
      • 1970-01-01
      • 2016-01-09
      • 2022-07-25
      相关资源
      最近更新 更多