GRU电力负荷预测代码
时间: 2024-04-14 07:23:29 浏览: 12
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
from sklearn.metrics import mean_squared_error
# 加载数据
data = pd.read_csv('电力负荷数据.csv')
data = data['电力负荷'].values.reshape(-1, 1)
# 数据预处理
scaler = MinMaxScaler()
data = scaler.fit_transform(data)
# 划分训练集和测试集
train_size = int(len(data) * 0.8)
train, test = data[:train_size], data[train_size:]
# 构建数据集
def create_dataset(dataset, look_back=1):
X, Y = [], []
for i in range(len(dataset) - look_back):
X.append(dataset[i:(i + look_back), 0])
Y.append(dataset[i + look_back, 0])
return np.array(X), np.array(Y)
look_back = 3
X_train, y_train = create_dataset(train, look_back)
X_test, y_test = create_dataset(test, look_back)
# 调整数据维度以适应GRU输入
X_train = np.reshape(X_train, (X_train.shape, X_train.shape, 1))
X_test = np.reshape(X_test, (X_test.shape, X_test.shape, 1))
# 构建GRU模型
model = Sequential()
model.add(GRU(50, input_shape=(look_back, 1)))
model.add(Dense(1))
model.compile(loss='mean_squared_error', optimizer='adam')
# 训练模型
model.fit(X_train, y_train, epochs=100, batch_size=1, verbose=2)
# 预测
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, train_predict[:, 0]))
print('Train Score: %.2f RMSE' % train_score)
test_score = np.sqrt(mean_squared_error(y_test, test_predict[:, 0]))
print('Test Score: %.2f RMSE' % test_score)
```