GRU模型交通量预测实例及代码
时间: 2023-06-26 09:03:44 浏览: 103
代码+基于神经网络(堆栈自编码SAEs、长短时神经网络LSTM、门循环单元GRU)的交通预测包含数据集
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
# 读取数据
data = pd.read_csv('traffic_volume.csv')
# 将日期时间列转换为时间戳
data['date_time'] = pd.to_datetime(data['date_time'], format='%Y-%m-%d %H:%M:%S')
# 将时间戳设置为索引
data = data.set_index('date_time')
# 选择需要预测的特征
feature = 'traffic_volume'
data = data[[feature]]
# 将数据划分为训练集和测试集
train_size = int(len(data) * 0.8)
train_data = data.iloc[:train_size]
test_data = data.iloc[train_size:]
# 将数据缩放到0-1范围内
scaler = MinMaxScaler()
train_data = scaler.fit_transform(train_data)
test_data = scaler.transform(test_data)
# 创建窗口函数,用于生成序列数据
def create_dataset(data, window_size=1):
X, y = [], []
for i in range(len(data) - window_size):
X.append(data[i:i+window_size])
y.append(data[i+window_size])
return np.array(X), np.array(y)
# 设置窗口大小
window_size = 24
# 创建训练集和测试集的序列数据
X_train, y_train = create_dataset(train_data, window_size)
X_test, y_test = create_dataset(test_data, window_size)
# 构建GRU模型
model = Sequential()
model.add(GRU(64, input_shape=(window_size, 1)))
model.add(Dense(1))
model.compile(loss='mse', optimizer='adam')
# 训练模型
model.fit(X_train, y_train, epochs=50, batch_size=32)
# 使用测试集评估模型
score = model.evaluate(X_test, y_test, batch_size=32)
print('Test loss:', score)
# 对测试集进行预测
y_pred = model.predict(X_test)
# 将预测结果缩放回原始比例
y_pred = scaler.inverse_transform(y_pred)
y_test = scaler.inverse_transform(y_test)
# 绘制预测结果和真实值的对比图
plt.plot(y_test, label='True')
plt.plot(y_pred, label='Predicted')
plt.legend()
plt.show()
```
这个代码将会读取一个名为"traffic_volume.csv"的交通量数据集,然后使用GRU模型进行预测并绘制预测结果和真实值的对比图。
阅读全文