GRU模型交通量预测及代码
时间: 2024-01-26 13:02:39 浏览: 59
GRU (Gated Recurrent Unit) 是一种循环神经网络,常用于序列数据的建模。在交通量预测任务中,我们可以使用 GRU 模型对历史交通数据进行建模,从而预测未来交通量。
下面是一个简单的 GRU 模型的交通量预测代码示例:
```python
import numpy as np
import pandas as pd
from keras.models import Sequential
from keras.layers import Dense, GRU
from sklearn.preprocessing import MinMaxScaler
# 加载数据
data = pd.read_csv('traffic.csv')
# 数据预处理
scaler = MinMaxScaler(feature_range=(0, 1))
data['scaled_volume'] = scaler.fit_transform(data['volume'].values.reshape(-1, 1))
# 划分训练集和测试集
train_size = int(len(data) * 0.8)
train_data = data.iloc[:train_size]
test_data = data.iloc[train_size:]
# 准备数据
def prepare_data(data, seq_len):
X = []
y = []
for i in range(len(data) - seq_len - 1):
X.append(data[i:(i + seq_len)])
y.append(data[i + seq_len])
return np.array(X), np.array(y)
seq_len = 10
X_train, y_train = prepare_data(train_data['scaled_volume'].values, seq_len)
X_test, y_test = prepare_data(test_data['scaled_volume'].values, seq_len)
# 构建 GRU 模型
model = Sequential()
model.add(GRU(units=64, input_shape=(seq_len, 1)))
model.add(Dense(1))
model.compile(loss='mean_squared_error', optimizer='adam')
# 训练模型
model.fit(X_train, y_train, epochs=50, batch_size=16)
# 在测试集上评估模型
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])
# 计算误差
train_score = np.sqrt(mean_squared_error(y_train[0], train_predict[:, 0]))
test_score = np.sqrt(mean_squared_error(y_test[0], test_predict[:, 0]))
print(f'Train Score: {train_score:.2f} RMSE')
print(f'Test Score: {test_score:.2f} RMSE')
```
这里使用了 Keras 框架来构建 GRU 模型。首先,我们加载数据并进行归一化处理。然后,将数据划分为训练集和测试集,并准备数据,以便输入到 GRU 模型中。接下来,构建 GRU 模型并训练模型。最后,在测试集上评估模型,并计算 RMSE 误差。
阅读全文