交通流预测python代码_Python 3 & Keras 实现基于神经网络的交通流预测

本文介绍了如何使用Python、Keras实现基于神经网络的交通流预测,包括LSTM、GRU和Stacked Auto-Encoders(SAEs)模型。通过数据预处理、模型构建、训练和评估,展示了不同模型的预测性能。实验结果显示,LSTM和GRU的预测效果优于SAEs。
摘要由CSDN通过智能技术生成

交通流量预测在智能交通(ITS)系统中占有重要地位,是实现交通诱导的前提。准确实时的短时交通流预测有助于更好的分析路网交通状况,对路网交通规划和交通优化控制有非常重要的作用。随着交通数据采集技术的不断发展,及时获取路网中实时的交通数据已成为可能,大量的交通信息为基于深度学习的预测模型提供了数据保障。

基于神经网络的交通流预测的相关研究如下列论文所示。由于与我的研究方向相关,在本文中我实现了基于SAEs、RNN的交通流量预测模型。

环境Python 3.5

Tensorflow-gpu 1.2.0

Keras 2.1.3

scikit-learn 0.18

数据处理

实验数据是从Caltrans Performance Measurement System (PeMS)获取的。原始的流量数据是一个长度为n的一维数据。我们首先使用训练集的数据实现一个标准化对象scaler,然后使用scaler分别对训练集与测试集进行标准化。

由于时序预测任务需要使用历史数据对未来数据进行预测,我们使用时滞变量lags对数据进行划分,最后获得大小为(samples, lags)的数据集。

划分好的数据集在排列顺序上依旧带有时序特性,虽然keras在训练时可以选择对数据进行混洗,但是其执行顺序是先对val数据进行采样再进行混洗,采样过程依旧是按照顺序来的。因此我们事先使用np.random.shuffle对数据进行混洗,打乱数据的顺序。def process_data(train, test, lags):

"""Process data

Reshape and split train\test data.

# Arguments

train: String, name of .csv train file.

test: String, name of .csv test file.

lags: integer, time lag.

# Returns

X_train: ndarray.

y_train: ndarray.

X_test: ndarray.

y_test: ndarray.

scaler: StandardScaler.

"""

attr = 'Lane 1 Flow (Veh/5 Minutes)'

df1 = pd.read_csv(train, encoding='utf-8').fillna(0)

df2 = pd.read_csv(test, encoding='utf-8').fillna(0)    # scaler = StandardScaler().fit(df1[attr].values)

scaler = MinMaxScaler(feature_range=(0, 1)).fit(df1[attr].values)

flow1 = scaler.transform(df1[attr].values)

flow2 = scaler.transform(df2[attr].values)

train, test = [], []    for i in range(lags, len(flow1)):

train.append(flow1[i - lags: i + 1])    for i in range(lags, len(flow2)):

test.append(flow2[i - lags: i + 1])

train = np.array(train)

test = np.array(test)

np.random.shuffle(train)

X_train = train[:, :-1]

y_train = train[:, -1]

X_test = test[:, :-1]

y_test = test[:, -1]    return X_train, y_train, X_test, y_test, scaler

模型

LSTM

2隐层LSTM网络。

  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值