- base到底是什么意思?
1.1 周期因子的第一种计算方法:1)除周均值 2)按列取中位数
预测时的值就是base*中位数。从这个角度base就是一个固定值了,PPT中base来自最后一周每天的的平均值(=100);
1.2周期因子的第二种计算方法:1)获取每日(工作日或周末)均值,2)再除以整体均值。
直接用最后一周的平均客流量作为base并不一定是最好的方法。也许最后三天或最后五天的均值能更好的反映最新的情况。但是,我们不能直接对最后三天客流量取均值(最后三天是周末,这样取的base就偏大了)。需要去掉周期性因素后,再取平均。具体做法,就是用客流量除以周期因子。
这样我们就可以取最后三天的平均,(108+91.4+120)/3=106.5,作为base。具体取多少天的,也要通过测试集的表现来确定。当然也可以按某些函数形式来给每天赋予不同的权重。
- 每个月的预测计算方法。
1)实质是将每个月的每天与一个星期的每天进行关联(加权平均),这个权重系数来自上面的一周内每天的周期因子。
2)可以演变出基于一周周期因子的月份加权因子。
1、datetime64与date之间的数据转换,否则容易报错
total_balance = total_balance[(total_balance['date'] >= np.datetime64(datetime.date(2014,3,1))) & (total_balance['date'] < np.datetime64(datetime.date(2014, month_index, 1)))]
添加np.datetime64转换。
2、预测方法
1)先算翌日周期因子
weekday_count['total_purchase_amt_weekdaymean'] *= weekday_count['date'] / len(np.unique(total_balance['month']))
weekday_count['total_redeem_amt_weekdaymean'] *= weekday_count['date'] / len(np.unique(total_balance['month']))
2)按day进行加权相加,得到一个月每天的因子
day_rate = weekday_count.drop(['weekday','date'],axis=1).groupby('day',as_index=False).sum()
3)通过一个月每天的量除以对应的因子即可得到一个月每天的base
day_pre['total_purchase_amt'] /= day_pre['total_purchase_amt_weekdaymean']
4)基于base和日期因子即可得到最后的预测结果
day_pre['total_purchase_amt'] *= day_pre['total_purchase_amt_weekdaymean']
3、训练集和测试集是如何划分的?