• 基于LSTM-Adaboost的电力负荷预测的MATLAB程序


    关注“电气仔推送”获得资料(专享优惠)

    主要内容:

    LSTM-AdaBoost负荷预测模型先通过 AdaBoost集成算法串行训练多个基学习器并计算每个基学习 器的权重系数,接着将各个基学习器的预测结果进行线性组合,生成最终的预测结果。代码中的LSTM可以替换为任意的机器学习算法。

    部分程序:

    %% 数据归一化
    [inputn,inputps]=mapminmax(input_train,0,1);
    [outputn,outputps]=mapminmax(output_train);
    inputn_test=mapminmax('apply',input_test,inputps);
    %% 获取输入层节点、输出层节点个数
    inputnum=size(input_train,1);
    outputnum=size(output_train,1);
    disp('/')
    disp('LSTM神经网络结构...')
    disp(['输入层的节点数为:',num2str(inputnum)])
    disp(['输出层的节点数为:',num2str(outputnum)])

    numFeatures = inputnum;   %特征为一维
    numResponses = outputnum;  %输出也是一维
    numHiddenUnits1 = 25;   %创建LSTM回归网络,指定LSTM层的隐含单元个数。可调
    layers = [ ...
        sequenceInputLayer(numFeatures)    %输入层
        lstmLayer(numHiddenUnits1, 'OutputMode', 'sequence')
        fullyConnectedLayer(numResponses)    %为全连接层,是输出的维数。
        regressionLayer];      %其计算回归问题的半均方误差模块 。即说明这不是在进行分类问题。
     
    %指定训练选项,求解器设置为adam, 1000轮训练。
    %梯度阈值设置为 1。指定初始学习率 0.01,在 125 轮训练后通过乘以因子 0.2 来降低学习率。
    options = trainingOptions('adam', ...
        'MaxEpochs',1000, ...
        'GradientThreshold', 1, ...
        'InitialLearnRate',0.01, ...      
        'LearnRateSchedule','piecewise', ...%每当经过一定数量的时期时,学习率就会乘以一个系数。
        'LearnRateDropFactor', 0.01, ...
        'LearnRateDropPeriod',600, ...      %乘法之间的纪元数由" LearnRateDropPeriod"控制。可调
        'Verbose',0,  ...  %如果将其设置为true,则有关训练进度的信息将被打印到命令窗口中。默认值为true。
        'Plots','training-progress');    %构建曲线图 将'training-progress'替换为none
    net0 = trainNetwork(inputn,outputn,layers,options); 
    an0 = predict(net0,inputn_test);  
    %预测结果反归一化与误差计算
    test_simu0=mapminmax('reverse',an0,outputps); %把仿真得到的数据还原为原始的数量级
    %误差指标
    error0 = output_test - test_simu0;
    mse0=mse(output_test,test_simu0)
    %% 标准LSTM神经网络作图
    figure
    plot(output_test,'b-','markerfacecolor',[0.5,0.5,0.9],'MarkerSize',6)
    hold on
    plot(test_simu0,'r--','MarkerSize',6)
    title(['mse误差:',num2str(mse0)])
    legend('真实y','预测的y')
    xlabel('样本数')
    ylabel('负荷值')
     

    训练进度:

    预测结果:

    预测误差:

  • 相关阅读:
    CNN 网络结构简介
    MYSQL高可用架构之MHA实战(真实可用)
    Dubbo源码(七) - 集群
    力扣 -- 673. 最长递增子序列的个数
    Python GUI编程之PyQt5入门到实战
    自动化工具
    NC5 二叉树根节点到叶子节点的所有路径和
    【云原生系列】第四讲:Knative 之 Eventing
    leetcode1678:设计Goal解析器(11.6每日一题)
    PostgreSQL Extension 开发环境搭建
  • 原文地址:https://blog.csdn.net/weixin_56691527/article/details/133716691