基于LSTM递归神经网络的多特征电能负荷预测(Python代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁

目录

💥1 概述

📚2 运行结果

🌈3 Python代码实现

🎉4 参考文献


💥1 概述

电能负荷预测按细粒度划分可分为粗度预测和细度预测。其中粗度预测则是将整个时间段的电能负荷数据进行训练,进而进行预测。而细度预测这是要考虑电能负荷季节,时间周期影响因子。

在进行城市居民电能负荷粗度预测时需要考虑比较如下三种情况的准确率:

  1. 利用上一时刻的电能负荷(power),温度(temperature),湿度(humidity),风速(speed)预测此刻的电能负荷,power_load_forecasting_V1
  2. 利用上一时刻的电能负荷(power)和此刻的温度(temperature),湿度(humidity),风速(speed)预测此刻的电能负荷,
  3. 利用上一若干时刻的电能负荷(power),温度(temperature),湿度(humidity),风速(speed)预测此刻的电能负荷,
    在进行城市居民电能负荷细度预测时,除了要考虑如上问题时,还需要考虑季节,时间周期等影响因子:
  4. 电力负荷往往具有周期性,夏季,冬季,过渡季(春季和秋季)用户用电量往往差距很大,因此在预测是可以考虑分开预测,
  5. 在各个季节进行预测是,我们还可以按天,周,月进行划分,

📚2 运行结果

122/122 - 0s - loss: 0.0303 - val_loss: 0.0392 - 167ms/epoch - 1ms/step
Epoch 41/50
122/122 - 0s - loss: 0.0303 - val_loss: 0.0391 - 170ms/epoch - 1ms/step
Epoch 42/50
122/122 - 0s - loss: 0.0303 - val_loss: 0.0393 - 170ms/epoch - 1ms/step
Epoch 43/50
122/122 - 0s - loss: 0.0303 - val_loss: 0.0397 - 172ms/epoch - 1ms/step
Epoch 44/50
122/122 - 0s - loss: 0.0304 - val_loss: 0.0391 - 170ms/epoch - 1ms/step
Epoch 45/50
122/122 - 0s - loss: 0.0304 - val_loss: 0.0394 - 176ms/epoch - 1ms/step
Epoch 46/50
122/122 - 0s - loss: 0.0304 - val_loss: 0.0396 - 172ms/epoch - 1ms/step
Epoch 47/50
122/122 - 0s - loss: 0.0304 - val_loss: 0.0396 - 203ms/epoch - 2ms/step
Epoch 48/50
122/122 - 0s - loss: 0.0303 - val_loss: 0.0396 - 196ms/epoch - 2ms/step
Epoch 49/50
122/122 - 0s - loss: 0.0303 - val_loss: 0.0396 - 182ms/epoch - 1ms/step
Epoch 50/50
122/122 - 0s - loss: 0.0303 - val_loss: 0.0396 - 166ms/epoch - 1ms/step
Test RMSE: 110.218
Test mape: 0.117

Process finished with exit code 0

 部分代码:

model.compile(loss='mae', optimizer='adam')
# fit network
history = model.fit(train_X, train_y, epochs=50, batch_size=72, validation_data=(test_X, test_y), verbose=2,
                    shuffle=False)
# plot history
pyplot.plot(history.history['loss'], label='train')
pyplot.plot(history.history['val_loss'], label='test')
pyplot.legend()
pyplot.show()

# make a prediction
yhat = model.predict(test_X)
test_X = test_X.reshape((test_X.shape[0], test_X.shape[2]))

# invert scaling for forecast
inv_yhat = concatenate((yhat, test_X[:, 1:]), axis=1)
inv_yhat = scaler.inverse_transform(inv_yhat)
inv_yhat = inv_yhat[:, 0]
# invert scaling for actual
test_y = test_y.reshape((len(test_y), 1))
inv_y = concatenate((test_y, test_X[:, 1:]), axis=1)
inv_y = scaler.inverse_transform(inv_y)
inv_y = inv_y[:, 0]
# calculate RMSE
rmse = sqrt(mean_squared_error(inv_y, inv_yhat))
print('Test RMSE: %.3f' % rmse)

# calculate MAPE
mape = mean_absolute_percentage_error(inv_y, inv_yhat)
print('Test mape: %.3f' % mape)

🌈3 Python代码实现

🎉4 参考文献

部分理论来源于网络,如有侵权请联系删除。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【资源说明】 1.项目代码均经过功能验证ok,确保稳定可靠运行。欢迎下载使用体验! 2.主要针对各个计算机相关专业,包括计算机科学、信息安全、数据科学与大数据技术、人工智能、通信、物联网等领域的在校学生、专业教师、企业员工。 3.项目具有丰富的拓展空间,不仅可作为入门进阶,也可直接作为毕设、课程设计、大作业、初期项目立项演示等用途。 4.当然也鼓励大家基于此进行二次开发。在使用过程中,如有问题或建议,请及时沟通。 5.期待你能在项目中找到乐趣和灵感,也欢迎你的分享和反馈! 【项目介绍】 Python基于深度学习LSTM的多特征电力负荷预测程序源码(附有项目说明+数据集).zip 电能负荷预测按细粒度划分可分为粗度预测和细度预测。其中粗度预测则是将整个时间段的电能负荷数据进行训练,进而进行预测。而细度预测这是要考虑电能负荷季节,时间周期影响因子。 在进行城市居民电能负荷粗度预测时需要考虑比较如下三种情况的准确率: 1. 利用上一时刻的电能负荷(power),温度(temperature),湿度(humidity),风速(speed)预测此刻的电能负荷,power_load_forecasting_V1 2. 利用上一时刻的电能负荷(power)和此刻的温度(temperature),湿度(humidity),风速(speed)预测此刻的电能负荷,power_load_forecasting_V2 3. 利用上一若干时刻的电能负荷(power),温度(temperature),湿度(humidity),风速(speed)预测此刻的电能负荷,power_load_forecasting_V3 在进行城市居民电能负荷细度预测时,除了要考虑如上问题时,还需要考虑季节,时间周期等影响因子: 1. 电力负荷往往具有周期性,夏季,冬季,过渡季(春季和秋季)用户用电量往往差距很大,因此在预测是可以考虑分开预测,power_load_forecasting_V4 2. 在各个季节进行预测是,我们还可以按天,周,月进行划分,power_load_forecasting_V5 实验环境 编译语言:Python3.6 深度学习框架:tensorflow2.0, keras 依赖库:pandas,sklearn,matplotlib,numpy
LSTM (Long Short-Term Memory) 是一种递归神经网络 (RNN) 的变体,常用于处理序列数据的预测任务,包括股票价格预测。在Python中,可以使用各种深度学习框架(如TensorFlow、Keras、PyTorch等)来实现LSTM模型进行股票预测。 下面是一个使用Keras和TensorFlow实现LSTM模型进行股票预测的简单示例: ```python import numpy as np import pandas as pd from sklearn.preprocessing import MinMaxScaler from tensorflow.keras.models import Sequential from tensorflow.keras.layers import LSTM, Dense # 读取股票数据 data = pd.read_csv('stock_data.csv') # 提取收盘价数据并进行归一化处理 close_prices = data['Close'].values.reshape(-1, 1) scaler = MinMaxScaler() normalized_prices = scaler.fit_transform(close_prices) # 划分训练集和测试集 train_size = int(len(normalized_prices) * 0.8) train_data, test_data = normalized_prices[:train_size], normalized_prices[train_size:] # 准备训练数据 def create_dataset(data, lookback): X, y = [], [] for i in range(len(data) - lookback - 1): X.append(data[i:(i + lookback), 0]) y.append(data[i + lookback, 0]) return np.array(X), np.array(y) lookback = 10 X_train, y_train = create_dataset(train_data, lookback) X_test, y_test = create_dataset(test_data, lookback) # 调整输入数据的形状 X_train = np.reshape(X_train, (X_train.shape[0], X_train.shape[1], 1)) X_test = np.reshape(X_test, (X_test.shape[0], X_test.shape[1], 1)) # 构建LSTM模型 model = Sequential() model.add(LSTM(50, input_shape=(lookback, 1))) model.add(Dense(1)) model.compile(loss='mean_squared_error', optimizer='adam') # 训练模型 model.fit(X_train, y_train, epochs=10, batch_size=1) # 在测试集上进行预测 predictions = model.predict(X_test) predictions = scaler.inverse_transform(predictions) # 可视化预测结果 import matplotlib.pyplot as plt plt.plot(scaler.inverse_transform(test_data[lookback+1:]), label='Actual') plt.plot(predictions, label='Predicted') plt.legend() plt.show() ``` 上述代码假设你已经将股票数据保存在`stock_data.csv`文件中,并且该文件包含一个名为"Close"的列,表示每天的收盘价。你可以根据自己的数据调整代码中的相关参数,并进行适当的修改。这只是一个简单的示例,实际的股票预测可能需要更复杂的模型和特征工程方法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值