• 回归预测 | MATLAB实现IWOA-LSTM改进鲸鱼算法算法优化长短期记忆神经网络的数据回归预测(多指标,多图)


    回归预测 | MATLAB实现IWOA-LSTM改进鲸鱼算法算法优化长短期记忆神经网络的数据回归预测(多指标,多图)

    效果一览

    1
    2

    基本介绍

    MPA-BiGRU海洋捕食者算法优化双向门控循环单元的数据多变量回归/时间序列预测 可直接运行 Matlab语言
    1.多特征输入单输出,回归预测,优化参数为:学习率,隐藏层节点数 ,正则化参数。出图效果如图1所示,可完全满足您的需求~
    2.鲸鱼优化算法改进点如下:
    基于余弦函数非线性调整控制参数的策略,以协调算法探索和开发能力;随机选择个体与当前个体进行差分变异产生新个体以增强群体的多样性,减小陷入局部最优的概率。

    程序设计

    • 完整源码和数据获取方式:私信回复MATLAB实现IWOA-LSTM改进鲸鱼算法算法优化长短期记忆神经网络的数据回归预测(多指标,多图)
    %%  清空环境变量
    warning off             % 关闭报警信息
    close all               % 关闭开启的图窗
    clear                   % 清空变量
    clc                     % 清空命令行
    
    %%  导入数据
    res = xlsread('data.xlsx');
    
    %%  划分训练集和测试集
    temp = randperm(103);
    
    P_train = res(temp(1: 80), 1: 7)';
    T_train = res(temp(1: 80), 8)';
    M = size(P_train, 2);
    
    P_test = res(temp(81: end), 1: 7)';
    T_test = res(temp(81: end), 8)';
    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);
    
    
    
    %%  仿真测试
    t_sim1 = sim(net, p_train);
    t_sim2 = sim(net, p_test);
    
    %%  数据反归一化
    T_sim1 = mapminmax('reverse', t_sim1, ps_output);
    T_sim2 = mapminmax('reverse', t_sim2, ps_output);
    
    %%  均方根误差
    error1 = sqrt(sum((T_sim1 - T_train).^2) ./ M);
    error2 = sqrt(sum((T_sim2 - T_test ).^2) ./ N);
    
    
    
    %%  相关指标计算
    % 决定系数 R2
    R1 = 1 - norm(T_train - T_sim1)^2 / norm(T_train - mean(T_train))^2;
    R2 = 1 - norm(T_test -  T_sim2)^2 / norm(T_test -  mean(T_test ))^2;
    
    disp(['训练集数据的R2为:', num2str(R1)])
    disp(['测试集数据的R2为:', num2str(R2)])
    
    % 平均绝对误差 MAE
    mae1 = sum(abs(T_sim1 - T_train)) ./ M ;
    mae2 = sum(abs(T_sim2 - T_test )) ./ N ;
    
    disp(['训练集数据的MAE为:', num2str(mae1)])
    disp(['测试集数据的MAE为:', num2str(mae2)])
    
    % 平均相对误差 MBE
    mbe1 = sum(T_sim1 - T_train) ./ M ;
    mbe2 = sum(T_sim2 - T_test ) ./ N ;
    
    disp(['训练集数据的MBE为:', num2str(mbe1)])
    disp(['测试集数据的MBE为:', num2str(mbe2)])
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64

    参考资料

    [1] https://blog.csdn.net/kjm13182345320/article/details/129215161
    [2] https://blog.csdn.net/kjm13182345320/article/details/128105718

  • 相关阅读:
    学习SpringMVC必知必会(3)~springmvc的请求和响应
    梦开始的地方 —— C语言常用字符函数汇总
    【数据结构与算法】第七篇:集合,映射
    IDEA -- bug笔记
    Java进阶路线目录索引(持续更新中)
    MySQL 开发规范
    微调大模型工具-LoRA
    客服测试12345678
    Matlab:多变量数据
    随想录一刷Day50——动态规划
  • 原文地址:https://blog.csdn.net/kjm13182345320/article/details/133996082