GRU模型预测交通量具体实例及代码
时间: 2023-06-17 13:07:26 浏览: 65
以下是一个基于GRU模型的交通量预测的实例代码,使用的是Python和Keras框架:
```python
import pandas as pd
import numpy as np
from sklearn.preprocessing import MinMaxScaler
from keras.models import Sequential
from keras.layers import Dense, Dropout, GRU
import matplotlib.pyplot as plt
# 加载数据集
data = pd.read_csv('traffic_volume.csv')
# 数据预处理
scaler = MinMaxScaler(feature_range=(0, 1))
scaled_data = scaler.fit_transform(data['traffic_volume'].values.reshape(-1, 1))
# 创建数据集
lookback = 24 # 每个样本数据包含24小时的历史数据
train_size = int(len(scaled_data) * 0.8)
train_data = scaled_data[:train_size, :]
test_data = scaled_data[train_size - lookback:, :]
def create_dataset(data, lookback):
X, Y = [], []
for i in range(len(data) - lookback):
X.append(data[i:(i + lookback), 0])
Y.append(data[i + lookback, 0])
return np.array(X), np.array(Y)
X_train, Y_train = create_dataset(train_data, lookback)
X_test, Y_test = create_dataset(test_data, lookback)
# 创建GRU模型
model = Sequential()
model.add(GRU(units=50, return_sequences=True, input_shape=(X_train.shape[1], 1)))
model.add(Dropout(0.2))
model.add(GRU(units=50, return_sequences=True))
model.add(Dropout(0.2))
model.add(GRU(units=50))
model.add(Dropout(0.2))
model.add(Dense(units=1))
model.compile(optimizer='adam', loss='mean_squared_error')
model.fit(X_train, Y_train, epochs=50, batch_size=32)
# 预测并可视化结果
train_predict = model.predict(X_train)
test_predict = model.predict(X_test)
train_predict = scaler.inverse_transform(train_predict)
Y_train = scaler.inverse_transform([Y_train])
test_predict = scaler.inverse_transform(test_predict)
Y_test = scaler.inverse_transform([Y_test])
plt.plot(Y_train.reshape(-1, 1), label='train')
plt.plot(train_predict, label='train predict')
plt.plot([None for _ in range(train_size)] + [x for x in test_predict], label='test predict')
plt.plot([None for _ in range(train_size)] + [x for x in Y_test.reshape(-1, 1)], label='test')
plt.legend()
plt.show()
```
这个模型使用了24小时的历史数据来预测下一小时的交通量。该模型包含3个GRU层和1个全连接层。在使用该模型进行预测时,我们可以看到训练数据和测试数据的预测结果与实际结果的对比,以评估该模型的性能。