ZeroDivisionError 在使用 statsmodels Holt 简单预测与趋势
ZeroDivisionError in using statsmodels Holt Simple Forecasting with Trend
我正在尝试用 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')`
File
"C:\ProgramData\Anaconda3\lib\site-packages\statsmodels\tsa\holtwinters.py",
line 889, in fit
optimized=optimized)
File "C:\ProgramData\Anaconda3\lib\site-packages\statsmodels\tsa\holtwinters.py",
line 594, in fit
use_boxcox=use_boxcox, lamda=lamda, remove_bias=remove_bias)
File
"C:\ProgramData\Anaconda3\lib\site-packages\statsmodels\tsa\holtwinters.py",
line 735, in _predict
aicc = aic + (2 * (k + 2) * (k + 3)) / (self.nobs - k - 3)
ZeroDivisionError: division by zero
这是statsmodels 0.9.0版本的问题,最新的statsmodels 0.10.1版本没有问题。此外,conda 默认安装 0.9.0 版。要解决问题,请使用管理员权限打开 Anaconda Prompt 并键入:
conda remove statsmodels
conda install statsmodels=0.10.1
(它可以删除一些其他包,但您可以稍后安装它们)
我正在尝试用 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')`
File "C:\ProgramData\Anaconda3\lib\site-packages\statsmodels\tsa\holtwinters.py", line 889, in fit optimized=optimized)
File "C:\ProgramData\Anaconda3\lib\site-packages\statsmodels\tsa\holtwinters.py", line 594, in fit use_boxcox=use_boxcox, lamda=lamda, remove_bias=remove_bias)
File "C:\ProgramData\Anaconda3\lib\site-packages\statsmodels\tsa\holtwinters.py", line 735, in _predict aicc = aic + (2 * (k + 2) * (k + 3)) / (self.nobs - k - 3)ZeroDivisionError: division by zero
这是statsmodels 0.9.0版本的问题,最新的statsmodels 0.10.1版本没有问题。此外,conda 默认安装 0.9.0 版。要解决问题,请使用管理员权限打开 Anaconda Prompt 并键入:
conda remove statsmodels
conda install statsmodels=0.10.1
(它可以删除一些其他包,但您可以稍后安装它们)