
190
|
第
4
章
In[57]:
X_hour_week = np.hstack([citibike.index.dayofweek.reshape(-1, 1),
citibike.index.hour.reshape(-1, 1)])
eval_on_features(X_hour_week, y, regressor)
Out[57]:
Test-set R^2: 0.84
现在我们的模型通过考虑一周的星期几和一天内的时间捕捉到了周期性的行为。它的
R
2
为
0.84
,预测性能相当好。模型学到的内容可能是
8
月前
23
天中星期几与时刻每种组合
的平均租车数量。这实际上不需要像随机森林这样复杂的模型,所以我们尝试一个更简单
的模型——
LinearRegression
(见图
4-16
):
In[58]:
from sklearn.linear_model import LinearRegression
eval_on_features(X_hour_week, y, LinearRegression())
Out[58]:
Test-set R^2: 0.13
图 4-16:线性模型使用一周的星期几和每天的时刻两个特征做出的预测
LinearRegression
的效果差得多,而且周期性模式看起来很奇怪。其原因在于我们用整数
编码一周的星期几和一天内的时间,它们被解释为连续变量。因此,线性模型只能学到关
于每天时间的线性函数——它学到的是,时间越晚,租车数量越多。但实际模式比这要复
杂得多。我们可以通过将整数解释为分类变量(用 ...