[数据挖掘] 46 时间序列预测 5 平滑法-移动平均 美国铁路(美铁)客运公司数据

[数据挖掘] 46 时间序列预测 5 平滑法-移动平均 美国铁路(美铁)客运公司数据_哔哩哔哩_bilibili

#设定窗口时间为12
ma_centered = ridership_ts.rolling(12, center=True).mean()
ma_tailing = ridership_ts.rolling(12).mean()

print(ma_centered.head(7)) #头欠项6
print(ma_centered.tail(7)) #尾欠项5

# 尾移动平均用于预测:向前移动一个时间单位以获得当月的移动平均预测值,eg,2月的移动平均值成为了3月份的客流量移动平均预测值
ma_centered = pd.Series(ma_centered[:-1].values, index=ma_centered.index[1:]) # 相当于一个移动平均的lag-1序列
ma_tailing = pd.Series(ma_tailing[:-1].values, index=ma_tailing.index[1:]) # 移动平均序列值不变,时间增加一个单位

print(ma_centered.head(7)) #头欠项6
print(ma_centered.tail(7)) #尾欠项4


# 叠加在原有数据上的移动平滑线
fig,ax = plt.subplots(figsize=(10,7),dpi=160)
ax=ridership_ts.plot(ax=ax,color='black',linewidth=0.5)
ma_centered.plot(ax=ax,color='mediumvioletred',linewidth=3)
ma_tailing.plot(ax=ax,style='--',linewidth=4,color='yellowgreen')
ax.set_xlabel('Time')
ax.set_ylabel('Ridership')
ax.legend(['客流量','中心移动平均','尾移动平均'])
plt.show()


# 使用尾移动平均法对美铁数据进行预测
# 切分训练集与测试集
ntest=36
ntrain=len(ridership_ts) - ntest
train_ts = ridership_ts[:ntrain]
test_ts = ridership_ts[ntrain:]

# 尾移动平均法
ma_tailing = train_ts.rolling(12).mean()
last_ma = ma_tailing[-1] # 获取 ma_tailing序列的最后一个元素作为预测值
ma_tailing_pred = pd.Series(last_ma, index=test_ts.index) # 使用朴素预测法进行预测,此处用最后一个ma预测测试集的所有数据点
fig, axes = plt.subplots(nrows=2,ncols=1,figsize=(9,7.5),dpi=180)
ma_tailing.plot(ax=axes[0],linewidth=3,color='yellowgreen')
ma_tailing_pred.plot(ax=axes[0],linewidth=3,color='yellowgreen',style='--')
residual = train_ts - ma_tailing
residual.plot(ax=axes[1],color = 'green')
residual = test_ts - ma_tailing_pred
residual.plot(ax=axes[1],color = 'green',linestyle = 'dashed')
graphLayout(axes,train_ts,test_ts)
plt.show()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值