gru模型交通量预测实例及代码且可视化
时间: 2023-06-19 16:07:08 浏览: 106
GRU模型预测.py,gru模型全称,Python
5星 · 资源好评率100%
以下是一个使用GRU模型进行交通量预测的示例代码,并包含可视化部分。
```python
# 导入必要的库
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn.preprocessing import MinMaxScaler
from keras.models import Sequential
from keras.layers import Dense, GRU
from keras.optimizers import Adam
# 读取数据
data = pd.read_csv('traffic_volume.csv')
# 数据预处理
data['datetime'] = pd.to_datetime(data['datetime'])
data.set_index('datetime', inplace=True)
# 划分训练集和测试集
train_data = data[:int(0.8*len(data))]
test_data = data[int(0.8*len(data)):]
# 归一化
scaler = MinMaxScaler()
train_data = scaler.fit_transform(train_data)
test_data = scaler.transform(test_data)
# 准备训练数据
def create_dataset(data, look_back=1):
X, Y = [], []
for i in range(len(data)-look_back-1):
X.append(data[i:(i+look_back), 0])
Y.append(data[i+look_back, 0])
return np.array(X), np.array(Y)
look_back = 24
train_X, train_Y = create_dataset(train_data, look_back)
test_X, test_Y = create_dataset(test_data, look_back)
# 构建模型
model = Sequential()
model.add(GRU(50, input_shape=(look_back, 1)))
model.add(Dense(1))
optimizer = Adam(lr=0.001)
model.compile(loss='mse', optimizer=optimizer)
# 训练模型
model.fit(train_X, train_Y, epochs=100, batch_size=64)
# 预测
train_predict = model.predict(train_X)
test_predict = model.predict(test_X)
# 反归一化
train_predict = scaler.inverse_transform(train_predict)
train_Y = scaler.inverse_transform([train_Y])
test_predict = scaler.inverse_transform(test_predict)
test_Y = scaler.inverse_transform([test_Y])
# 可视化
train_predict_plot = np.empty_like(data)
train_predict_plot[:, :] = np.nan
train_predict_plot[look_back:len(train_predict)+look_back, :] = train_predict
test_predict_plot = np.empty_like(data)
test_predict_plot[:, :] = np.nan
test_predict_plot[len(train_predict)+(look_back*2)+1:len(data)-1, :] = test_predict
plt.figure(figsize=(10, 6))
plt.plot(data, label='actual')
plt.plot(train_predict_plot, label='train_predict')
plt.plot(test_predict_plot, label='test_predict')
plt.legend()
plt.show()
```
在上面的代码中,我们首先读取并预处理数据,然后将其划分为训练集和测试集。接下来,我们对数据进行归一化,并准备用于训练的数据。使用`create_dataset`函数从历史数据中创建输入/输出对。我们使用24小时的历史数据预测未来一小时的交通量。使用这些输入/输出对,我们可以训练GRU模型。
在训练完成后,我们使用模型预测训练集和测试集上的交通量。然后,我们反归一化数据,并使用matplotlib库进行可视化。在可视化中,我们可以看到模型在训练集和测试集上的表现如何。
阅读全文