通常来说,领域专家可以帮助找出有用的特征,其信息量比原始数据大得多。自行车数据集给出了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特征训练模型
首先导入数据:

 Taohongfei_huster  于 2018-10-16 21:35:13 发布
 本文通过一个预测自行车租赁数量的例子,探讨了如何利用专家知识进行特征工程。通过对时间序列数据的分析,发现日期和时间是关键特征。在训练随机森林模型时,通过添加一天中的时刻和一周中的星期几作为特征,显著提升了预测效果。线性模型在正确处理这些分类特征后,也得到了类似的表现。特征工程对于提高模型性能至关重要。 
