python - 使用 python 和 statsmodels 进行简单的指数平滑
问题描述
我试图用 Python 实现一个 SES 模型来预测时间序列数据。但是,我还没有成功。继承代码:
df = pd.read_csv('C:/UniBw/7_HT2018/Bachelorarbeit/data/average-annual-temperature-centr.csv', nrows = 121)
train = df[:101]
test = df[100:]
#Aggregating the dataset at yearly level
df.Timestamp = pd.to_datetime(df.Year,format='%Y',errors='ignore')
df.index = df.Timestamp
df = df.resample('365D').mean()
test.Timestamp = pd.to_datetime(test.Year,format='%Y',errors='ignore')
test.index = test.Timestamp
test = test.resample('365D').mean()
from statsmodels.tsa.api import ExponentialSmoothing, SimpleExpSmoothing, Holt
y_hat_avg = test.copy()
fit2 = SimpleExpSmoothing(np.asarray(train['temperature'])).fit(smoothing_level=0.6)
y_hat_avg['temperature'] = fit2.forecast(len(test))
plt.figure(figsize=(16,8))
plt.plot(y_hat_avg['temperature'], label='SES')
plt.plot(df.temperature, label='Actual')
plt.legend(loc='best')
plt.title('Average Annual Temperature, central England, 1851 – 1970 (yearly data)')
plt.grid(True)
plt.show()
还有我所拥有的:在此处输入图像描述
有人可以帮我吗?
解决方案
推荐阅读
- java - 从网站定位手机(获取其经度和纬度)的最佳方法是什么?
- javascript - JavaScript 用文字字符串换行符替换比喻字符串换行符
- java - 如何解决 406 错误“找不到可接受的表示”?
- c++ - 为一组类型专门化功能模板
- mysql - 为什么我的“数量”未定义?
- javascript - Sequelize TypeError:无法读取未定义的属性“最大值”
- javascript - 正则表达式查找包含双星号包围的数字的所有内容
- java - Apache Felix mvn 包
- sql - T-SQL 抛出异常并返回(不使用 TRY)
- reactjs - 由于主题标签,S3 CloudFront React SPA 返回 403,但无法设置 403 错误页面