创新模型LSTM+Transformer交通流量预测(Python代码,GRU/LSTM/CNN_LSTM作为对比模型,多特征输入,单标签输出,可以替换为其它时序数据集)
测试集效果图(区域放大可以自己调整坐标,想放大哪部分都可以)对比模型的指标差异。
测试集效果图(区域放大可以自己调整坐标,想放大哪部分都可以)
对比模型的指标差异(都是以%呈现,例如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
更多推荐
所有评论(0)