通常来说,领域专家可以帮助找出有用的特征,其信息量比原始数据大得多。自行车数据集给出了2015年8月每天的自行车租赁的数目,每隔3小时统计一次,要求预测给定日期和时间,出租自行车的数目。
1.加载数据
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
import mglearn
citibike = mglearn.datasets.load_citibike()
print("Citibike data:\n{}".format(citibike.head()))
下面绘出整个月租车数目的可视化图形:
plt.figure(figsize=(10, 3))
xticks = pd.date_range(start=citibike.index.min(), end=citibike.index.max(),
freq='D')
plt.xticks(xticks.astype("int"), xticks.strftime("%a %m-%d"), rotation=90, ha="left")
plt.plot(citibike, linewidth=1)
plt.xlabel("Date")
plt.ylabel("Rentals")
在对时间序列的预测任务进行评估时,我们通常希望从过去学习并预测未来,也就是说,在划分训练集和测试集时,我们希望使用某个特定日期之前的所有数据作为训练集,该日期之后的所有数据作为测试集。在这里,我们使用前184个数据点(对应前23天0)作为训练集,剩余的64个数据点(对应于后8天)作为测试集。
在我们的预测任务中,我们使用的唯一特征就是某一天租车数量对应的日期和时间,在计算机上存储日期常用的方式是POSIX时间,它是从1970年1月1日00:00:00起至现在的总秒数。
2.采用POSIX特征训练模型
首先导入数据: