💥💥💞💞欢迎来到本博客❤️❤️💥💥
🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。
⛳️座右铭:行百里者,半于九十。
📋📋📋本文目录如下:🎁🎁🎁
目录
💥1 概述
农业电力负荷预测对于农业生产和电力供应具有重要意义。为了提高预测准确性和效率,可以结合注意力机制和长短期记忆网络进行预测研究。
通过EEMD对原始目标序列进行分解,生成衍生的变量序列。然后将它们一起存储在 eemd.csv 中。这是 DARNN 预测模型的代码,该模型使用上述派生变量作为模型的输入来预测未来的农业电力负荷。
首先,可以采用注意力机制对农业电力负荷进行分解,将其分解为多个时间步长的子序列。这样可以更好地捕捉负荷的变化规律和周期性,提高预测的精度。同时,注意力机制可以帮助模型自动学习并关注对预测结果影响较大的时间段和特征,从而提高模型的泛化能力和鲁棒性。
其次,可以采用注意力长短期记忆网络(Attention-based LSTM)进行农业电力负荷预测。这种网络结合了长短期记忆网络(LSTM)和注意力机制,能够更好地捕捉序列数据中的长期依赖关系和重要特征。通过引入注意力机制,模型可以自适应地学习不同时间步长的重要信息,提高了预测的准确性和鲁棒性。
综合上述两种方法,可以构建一个基于注意力的多步超短期农业电力负荷预测分解策略和注意力长短期记忆网络的预测模型。该模型可以充分利用注意力机制和LSTM网络的优势,提高农业电力负荷预测的准确性和效率,为农业生产和电力供应提供更可靠的支持。
📚2 运行结果
2.1 需要的第三方库:
import torch
import argparse
import numpy as np
import pandas as pd
from torch import nn
from torch import optim
import torch.nn.functional as F
import matplotlib.pyplot as plt
from matplotlib import rcParams
from torch.autograd import Variable
from utils import *
from model import *
from sklearn.metrics import mean_squared_error,mean_absolute_error,r2_score, mean_absolute_percentage_error
import torch import argparse import numpy as np import pandas as pd from torch import nn from torch import optim import torch.nn.functional as F import matplotlib.pyplot as plt from matplotlib import rcParams from torch.autograd import Variable from utils import * from model import * from sklearn.metrics import mean_squared_error,mean_absolute_error,r2_score, mean_absolute_percentage_error
2.2 读取数据
.....
2.3 可视化分析
2.4 训练结果
2.5 代码展示
部分代码:
y_train_pred,train_attention_encoder,train_attention_decoder = model.train() y_test_pred,test_attention_encoder,test_attention_decoder = model.test() #可视化 fig1 = plt.figure() plt.semilogy(range(len(model.iter_losses)), model.iter_losses) plt.savefig("1.png") plt.show() #plt.close(fig1) fig2 = plt.figure() plt.rcParams['xtick.direction'] = 'in' plt.rcParams['ytick.direction'] = 'in' plt.semilogy(range(len(model.epoch_dev_losses)), model.epoch_dev_losses, label="Train", marker = 'o', ms = 3) plt.semilogy(range(len(model.epoch_train_losses)), model.epoch_train_losses, label="Valid", marker = 'o', ms = 3) plt.title(r'$\tau$ = 1', fontproperties = 'Times New Roman', size=18) plt.legend(loc='upper right') plt.xlabel('Epoch', fontproperties = 'Times New Roman', size=14) plt.ylabel("Loss", fontproperties = 'Times New Roman', size=14) plt.grid() plt.savefig("2.png") plt.show() #plt.close(fig2) y_test_true = model.y[model.train_timesteps + model.dev_timesteps:model.train_timesteps + model.dev_timesteps+model.test_timesteps] zy_test_pred = y_test_pred * model.std_test_y + model.mean_test_y zy_test_true = y_test_true * model.std_test_y + model.mean_test_y fig3 = plt.figure() plt.plot(zy_test_pred, label='Predicted_Test') plt.plot(zy_test_true, label="True_test") plt.legend(loc='upper left') plt.savefig("3.png") plt.show() #plt.close(fig3) pd.DataFrame(np.hstack((zy_test_true.reshape(-1,1), zy_test_pred.reshape(-1,1))), columns=['y_true', 'y_pred']).to_csv('DARNN_result.csv') print('------------------Test------------------') print('R2: %.3f' % r2_score(zy_test_true, zy_test_pred)) print('MAE: %.3f' % mean_absolute_error(zy_test_true, zy_test_pred)) print('RMSE: %.3f' % np.sqrt(mean_squared_error(zy_test_true, zy_test_pred))) print('MAPE: %.3f' % mean_absolute_percentage_error(zy_test_true, zy_test_pred)) _,train_attention_encoder,train_attention_decoder = model.test('train') _,dev_attention_encoder,dev_attention_decoder = model.test('dev') print("训练集的encoder attention权重: ") print(torch.mean(train_attention_encoder,dim=0)) print("验证集的encoder attention权重: ") print(torch.mean(dev_attention_encoder,dim=0)) print("测试集的encoder attention权重: ") print(torch.mean(test_attention_encoder,dim=0)) print("训练集的decoder attention权重: ") print(torch.mean(train_attention_decoder,dim=0)) print("验证集的decoder attention权重: ") print(torch.mean(dev_attention_decoder,dim=0)) print("测试集的decoder attention权重: ") print(torch.mean(test_attention_decoder,dim=0)) if __name__ == '__main__': main()
🎉3 参考文献
文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。
[1] Huang Y , Yang L , Liu S ,et al.Multi-Step Wind Speed Forecasting Based On Ensemble Empirical Mode Decomposition, Long Short Term Memory Network and Error Correction Strategy[J].Energies, 2019, 12(10):1822.DOI:10.3390/en12101822.
[2] Nguyen H P , Baraldi P , Zio E ,et al.Ensemble empirical mode decomposition and long short-term memory neural network for multi-step predictions of time series signals in nuclear power plants[J]. 2021.
[3]王健,易姝慧,刘浩,等.基于注意力机制优化长短期记忆网络的短期电力负荷预测[J].中南民族大学学报:自然科学版, 2023, 42(1):73-81.
[4]魏骜,茅大钧,韩万里,等.基于EMD和长短期记忆网络的短期电力负荷预测研究[J].热能动力工程, 2020, 35(4):7.DOI:10.16146/j.cnki.rndlgc.2020.04.028.