我最终决定开始学习机器学习,为此我尝试预测我所在城市公共自行车共享系统的自行车可用性。
- 数据集(1MB),适用于一个自行车站点。列包括:日期、星期几、ID、站点、可用自行车、可用停车位
我一直在关注Machine Learning Mistery的教程,使用Keras,在这种情况下是一个用于多变量时间序列预测的LSTM,我认为这对我解决问题来说是合适的。
目前,我正在训练神经网络,输入数据包括:前一天的星期几(t-1)、前一时刻的可用自行车数(t-1)和当前时刻的可用自行车数(t)。
损失和验证损失的图表我认为看起来还不错。如果我没有弄错的话,RMSE为0.9意味着我预测时可能会有一辆自行车的误差。
如果这一切都是正确的,我也想给神经网络提供样本采集的日期,但我在处理这个问题时遇到了我不知道如何解决的问题。添加额外的列时,我得到了如下错误:
ValueError: operands could not be broadcast together with shapes (5949,2) (3,) (5949,2)
为了将日期添加到问题中,我将删除读取文件时第63行上的index_col = 0
部分。
添加日期来改进预测是否正确?应该如何操作?
回答:
行values = values.astype('float32')
将所有列转换为浮点数,因此所有列都应该是数字格式。你的第二列Weekday
通过以下行被转换为整数:
values[:, 0] = encoder.fit_transform(values[:, 0])
这一行将第0列(第一列)转换为整数。在这里,你的第一列是日期。
解决方案:只需将第二列转换为整数
在上述行之后添加以下行:
values[:, 1] = encoder.fit_transform(values[:, 1])
现在回答你的第二个问题
添加日期来改进预测是否正确?应该如何操作?
不,这样做是不正确的。你可以使用月份,这会更好,而不是使用时间-日期。