基于分位数回归的长短期记忆网络QRLSTM的数据回归区间预测,多输入单输出模型。(主要应用于风速,负荷,功率)

%%  清空环境变量
warning off             % 关闭报警信息
close all               % 关闭开启的图窗
clear                   % 清空变量
clc                     % 清空命令行
tic

%%  导入数据
load xtrain.mat
P_train = xtrain(:,1:20)';
T_train = xtrain(:,end)';
load ytrain.mat
P_test = ytrain(:,1:20)';
T_test = ytrain(:,end)';

% P_train = xlsread('data','training set','B2:G191')';
% T_train= xlsread('data','training set','H2:H191')';
% % 测试集——44个样本
% P_test=xlsread('data','test set','B2:G45')';
% T_test=xlsread('data','test set','H2:H45')';

f_=size(P_train, 1);                  % 输入特征维度
outdim = 1;                                  % 最后一列为输出
%%  划分训练集和测试集
M = size(P_train, 2);
N = size(P_test, 2);

%%  数据归一化
[p_train, ps_input] = mapminmax(P_train, 0, 1);
p_test = mapminmax('apply', P_test, ps_input);

[t_train, ps_output] = mapminmax(T_train, 0, 1);
t_test = mapminmax('apply', T_test, ps_output);

%%  创建网络
save_net = [];
for i = 0.02 : 0.19 : 0.97                                      % 置信区间范围 0.97 - 0.02 = 0.95

    layers = [ ...
        sequenceInputLayer(f_, 'name', 'input')                 % 输入层
        
        lstmLayer(10, 'name', 'hidden')                          % LSTM 层,隐藏层节点个数 5
        reluLayer                                               % Relu激活层
    
        fullyConnectedLayer(outdim, 'name', 'fullconnect')      % 回归层
        QRegressionLayer('out', i)];
    
    %%  网络参数设置
    options = trainingOptions('adam', ...      % Adam梯度下降算法
        'MaxEpochs',600, ...                  % 最大训练次数 600
        'InitialLearnRate', 0.01, ...          % 初始学习率为 0.01
        'LearnRateSchedule', 'piecewise', ...  % 学习率下降
        'LearnRateDropFactor', 0.2, ...        % 学习率下降因子 0.2
        'LearnRateDropPeriod', 400, ...        % 经过 400 次训练后 学习率为 0.01 * 0.2
        'Shuffle', 'every-epoch', ...          % 训练打乱数据集
        'ValidationPatience', Inf, ...         % 关闭验证
        'Verbose', false);
    
    %%  训练网络
    net = trainNetwork(p_train, t_train, layers, options);

    %%  保存网络
    save_net = [save_net, net];

end

%%  采用不同网络进行预测
for i = 1 : length(save_net)

    %%  仿真预测
    t_sim1(i, :) = predict(save_net(i), p_train); 
    t_sim2(i, :) = predict(save_net(i), p_test ); 

  • 0
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 15
    评论
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

智能算法及其模型预测

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值