GRU模型交通量预测实例
时间: 2023-10-02 20:11:27 浏览: 82
以下是使用GRU模型进行交通量预测的示例代码:
```python
import pandas as pd
import numpy as np
from sklearn.preprocessing import MinMaxScaler
from keras.models import Sequential
from keras.layers import Dense, GRU
# 读取数据
df = pd.read_csv("traffic_volume.csv")
# 数据预处理
df["date_time"] = pd.to_datetime(df["date_time"])
df["hour"] = df["date_time"].dt.hour
df["weekday"] = df["date_time"].dt.weekday
df = df.drop(["date_time"], axis=1)
# 划分训练集和测试集
train_size = int(len(df) * 0.8)
train = df[:train_size]
test = df[train_size:]
# 特征缩放
scaler = MinMaxScaler()
train_scaled = scaler.fit_transform(train)
test_scaled = scaler.transform(test)
# 准备数据
def create_dataset(dataset, look_back=1):
X, y = [], []
for i in range(len(dataset)-look_back):
X.append(dataset[i:(i+look_back), :])
y.append(dataset[i+look_back, 0])
return np.array(X), np.array(y)
look_back = 24 # 使用前24小时的数据进行预测
train_X, train_y = create_dataset(train_scaled, look_back)
test_X, test_y = create_dataset(test_scaled, look_back)
# 构建模型
model = Sequential()
model.add(GRU(units=50, input_shape=(train_X.shape[1], train_X.shape[2])))
model.add(Dense(1))
model.compile(loss='mean_squared_error', optimizer='adam')
# 训练模型
model.fit(train_X, train_y, epochs=50, batch_size=72, validation_data=(test_X, test_y))
# 预测
test_predict = model.predict(test_X)
test_predict = scaler.inverse_transform(np.concatenate((test_predict, test_X[:, -1, 1:]), axis=1))[:, 0]
# 评估
from sklearn.metrics import mean_squared_error, mean_absolute_error
mse = mean_squared_error(test["traffic_volume"].iloc[look_back:], test_predict)
mae = mean_absolute_error(test["traffic_volume"].iloc[look_back:], test_predict)
print("MSE:", mse)
print("MAE:", mae)
```
在这个示例中,我们使用了GRU模型来预测交通流量。我们首先读取数据,将日期时间转换为小时和星期几,并将其用作特征。然后,我们使用MinMaxScaler对数据进行缩放。接下来,我们将数据划分为训练集和测试集,并使用前24小时的数据进行预测。我们使用Keras构建GRU模型,并使用训练集进行训练。最后,我们使用测试集进行预测,并计算MSE和MAE。
阅读全文