测试集效果图(区域放大可以自己调整坐标,想放大哪部分都可以)

对比模型的指标差异(都是以%呈现,例如1.58是1.58%)

评价指标代码

# 输出模型性能指标
def mape(y_true, y_pred):
    return np.mean(np.abs((y_pred - y_true) / y_true)) * 100

print('训练集上的MAE/MSE/MAPE')
print(sqrt(mean_absolute_error(y_train_predict, y_train) * 100))  # 平均绝对误差
print(mean_squared_error(y_train_predict, y_train) * 100)  # 均方误差
print(mape(y_train_predict, y_train))  

print('测试集上的MAE/MSE/MAPE')
print(sqrt(mean_absolute_error(y_test_predict, y_test) * 100))
print(mean_squared_error(y_test_predict, y_test) * 100)
print(mape(y_test_predict, y_test))

指标 

创新模型LSTM+Transformer:
 训练集上的MAE/MSE/MAPE
1.5886282463946906
0.1361822564577711
12.143780976027003
测试集上的MAE/MSE/MAPE
1.5218126086705164
0.09994232432758583
11.315931018727568

CNN-GRU模型:

训练集上的MAE/MSE/MAPE
1.9424601734105615
0.26194007568957506
19.607435300374682
测试集上的MAE/MSE/MAPE
1.8404629393394654
0.1876924267237112
18.207440596691292

LSTM模型

训练集上的MAE/MSE/MAPE
2.0042504766720692
0.26384501982887554
21.51600922652523
测试集上的MAE/MSE/MAPE
1.909576503549846
0.20565213622240514
20.35344566761904

GRU模型

训练集上的MAE/MSE/MAPE
1.9055439952300386
0.23331972640971152
19.341934236936282
测试集上的MAE/MSE/MAPE
1.786173901289904
0.16204585058542742
17.851002557538926

 1.运行效果:

交通流量预测(python代码,压缩包中带有数据,CNN_GRU,CNN_BiGRU_ATTENTION,LSTM三种不同模型,解压缩三份代码可以直接运行)_哔哩哔哩_bilibili

环境库版本(如果库版本不一样, 一般也可以运行,这里展示我运行时候的库版本,是为了防止你万一在你的电脑上面运行不了,可以按照我的库版本进行安装并运行)

2.数据来源:美国单方向交通流量(15条道路)

数据开始位置(每个5分钟采集数据,从9/03/2018 0:00开始,一直到10/31/2018 23:55,一共有12096行数据)

数据截止位置 

3.关于特征与标签选择(在交通流量预测方面主要有以下三种方式,本文是第二种)

3.1.第一种方式如下图所示

每一行前14列(黄色部分) 作为特征输入,每一行的第15列值作为标签(蓝色部分)

这种方法非常不建议,因为,虽然拟合效果好,但是用同一时刻发生采集的数据作为特征和标签,没有实用性。

3.2.第二种方式如下图所示

前6行的15列数据(黄色部分)作为特征输入,第7行的第十五列数据(蓝色部分)为标签。 

根据已获取的历史数据预测下一个时间点或者未来多个时间点 更符合实际。

 目前代码是对未来一个点的预测,如果需要对未来时刻多个点的预测,可以私信。

 3.3.第三种方式如下图所示

 前6行的14列数据(黄色部分)作为特征输入,第7行的第十五列数据(蓝色部分)为标签。 

这种看起来更高级一些,但是结合实际情况,15列的历史数据是现实中能获取到的,特征输入没有必要故意不用第15列的历史数据 ,所以这份数据集,我推荐第二种,其它数据集可能第三种方案更符合实际情况。

4.项目文件

第一个文件:CNN_GRU表格,装载的是CNN_GRU.py预测的测试集结果

第二个文件:CNN_GRU.py

第三个文件是数据,data15表格装载的是美国交通流量数据

第四个文件:GRU表格,转载的是GRU.py预测的测试集结果和测试集真实值

第五个文件:GRU.py

第六个文件:LSTM表格,转载的是LSTM.py预测的测试集结果和测试集真实值

第七个文件:LSTM.py

第八个文件:LSTM_Transform表格,转载的是LSTM_Transform预测的测试集结果和测试集真实值

第九个文件:LSTM_Transform

第十个文件:plt.py是读取四个不同程序对测试集预测的结果,并与测试集真实值进行对比。

第九个文件:version.py是展示环境库目前的版本

4.结果对比(选取测试集里的最后一天进行绘图展示:10/31/2018):


对代码和数据集感兴趣的 ,可以关注最后一行:

# 导入所需的库
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
from sklearn import preprocessing
from sklearn.metrics import mean_squared_error
from sklearn.metrics import mean_absolute_error
from math import sqrt
from keras.layers import *
from keras.models import *
from sklearn import preprocessing
from pandas import DataFrame

#数据集和代码的压缩包https://mbd.pub/o/bread/mbd-ZZWcmZ9s

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐