分类预测 | MATLAB实现GA-BiLSTM遗传算法优化双向长短期记忆网络的数据多输入分类预测

本文涉及的产品
智能开放搜索 OpenSearch行业算法版,1GB 20LCU 1个月
实时计算 Flink 版,5000CU*H 3个月
实时数仓Hologres,5000CU*H 100GB 3个月
简介: 分类预测 | MATLAB实现GA-BiLSTM遗传算法优化双向长短期记忆网络的数据多输入分类预测

分类预测 | MATLAB实现GA-BiLSTM遗传算法优化双向长短期记忆网络的数据多输入分类预测

@TOC

效果一览

image.png
image.png
image.png
image.png

基本介绍

MATLAB实现GA-BiLSTM遗传算法优化双向长短期记忆网络的数据多输入分类预测
GA-BiLSTM遗传算法优化双向长短期记忆网络的数据多输入多输入分类预测(Matlab完整程序和数据)
多特征输入的二分类及多分类模型。程序内注释详细,直接替换数据就可以用。程序语言为matlab,程序可出分类效果图,混淆矩阵图。
运行环境Matlab2018及以上.
优化学习率、隐藏层节点数、正则化系数。
运行主程序main即可,其余为函数文件无需运行,所有程序放在一个文件夹,data为数据集;

程序设计

%%  优化算法参数设置
SearchAgents_no = 5;                   % 种群数量
Max_iteration = 8;                    % 最大迭代次数
dim = 3;                               % 优化参数个数
lb = [1e-4, 10, 1e-4];                 % 参数取值下界(学习率,隐藏层节点,正则化系数)
ub = [1e-2, 30, 1e-1];                 % 参数取值上界(学习率,隐藏层节点,正则化系数)

fitness = @(x)fical(x,p_train,t_train,f_);

[Best_score,Best_pos,Convergence_curve]=GA(SearchAgents_no,Max_iteration,lb ,ub,dim,fitness)

%%  记录最佳参数
Best_pos(1, 2) = round(Best_pos(1, 2));
best_lr = Best_pos(1, 1);
best_hd = Best_pos(1, 2);
best_l2 = Best_pos(1, 3);

%%  建立模型
% ----------------------  修改模型结构时需对应修改fical.m中的模型结构  --------------------------
layers = [
    sequenceInputLayer(f_)            % 输入层

    bilstmLayer(best_hd)              % BiLSTM层
    reluLayer                         % Relu激活层


%%  参数设置
% ----------------------  修改模型参数时需对应修改fical.m中的模型参数  --------------------------
options = trainingOptions('adam', ...           % Adam 梯度下降算法
         'MaxEpochs', 500, ...                  % 最大训练次数 500
         'InitialLearnRate', best_lr, ...       % 初始学习率 best_lr
         'LearnRateSchedule', 'piecewise', ...  % 学习率下降
         'LearnRateDropFactor', 0.5, ...        % 学习率下降因子 0.1
         'LearnRateDropPeriod', 400, ...        % 经过 400 次训练后 学习率为 best_lr * 0.5
         'Shuffle', 'every-epoch', ...          % 每次训练打乱数据集
         'ValidationPatience', Inf, ...         % 关闭验证
         'L2Regularization', best_l2, ...       % 正则化参数
         'Plots', 'training-progress', ...      % 画出曲线
         'Verbose', false);

%%  训练模型
net = trainNetwork(p_train, t_train, layers, options);

%%  仿真验证
t_sim1 = predict(net, p_train);
t_sim2 = predict(net, p_test );



%本函数完成交叉操作
% pcorss                input  : 交叉概率
% lenchrom              input  : 染色体的长度
% chrom                 input  : 染色体群
% sizepop               input  : 种群规模
% ret                   output : 交叉后的染色体

for i=1:sizepop 

    % 随机选择两个染色体进行交叉
    pick=rand(1,2);
    while prod(pick)==0
        pick=rand(1,2);
    end
    index=ceil(pick.*sizepop);
    % 交叉概率决定是否进行交叉
    pick=rand;
    while pick==0
        pick=rand;
    end
    if pick>pcross
        continue;
    end

        % 随机选择交叉位置
        pick=rand;
        while pick==0
            pick=rand;
        end
        pos=ceil(pick.*sum(lenchrom)); %随机选择进行交叉的位置,即选择第几个变量进行交叉,注意:两个染色体交叉的位置相同
        pick=rand; %交叉开始
        v1=chrom(index(1),pos);
        v2=chrom(index(2),pos);
        chrom(index(1),pos)=pick*v2+(1-pick)*v1;
        chrom(index(2),pos)=pick*v1+(1-pick)*v2; %交叉结束
        %检验染色体2的可行性
end

参考资料

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

相关文章
|
XML SQL 搜索推荐
【Spring Boot 快速入门】十一、Spring Boot集成AutoGenerator代码生成器
【Spring Boot 快速入门】十一、Spring Boot集成AutoGenerator代码生成器
1125 0
【Spring Boot 快速入门】十一、Spring Boot集成AutoGenerator代码生成器
|
分布式计算 Java Hadoop
HDFS 集群读写压测
在虚拟机中配置集群时,需设置每台服务器网络为百兆,以模拟实际网络环境。使用Hadoop的`TestDFSIO`进行HDFS性能测试,包括写入和读取数据。写测试中,创建11个128MB文件,平均写入速度为3.86 MB/sec,总处理数据量1408 MB,测试时间137.46秒。资源分配合理,传输速度超过单台服务器理论最大值12.5M/s,说明网络资源已充分利用。读测试主要依赖硬盘传输速率,速度快。测试完成后使用`TestDFSIO -clean`删除测试数据。
399 2
|
SQL 分布式计算 大数据
MaxCompute操作报错合集之在sql 里嵌套查询时,查询条件带有instr时报错,如何解决
MaxCompute是阿里云提供的大规模离线数据处理服务,用于大数据分析、挖掘和报表生成等场景。在使用MaxCompute进行数据处理时,可能会遇到各种操作报错。以下是一些常见的MaxCompute操作报错及其可能的原因与解决措施的合集。
|
缓存 Unix Windows
Qt之QLocalSocket
简述 QLocalSocket类提供了一个本地socket。 在Windows中,这是一个命名管道;在Unix中,这是一个本地网域socket。 如果发生错误,socketError()会返回错误的类型,errorString()则返回人类可读的错误描述。 虽然QLocalSocket是一个事件循环使用而设计,它也可以不被如此使用。这种情况下,必须使用 waitF
2754 0
vs2017 :C2440 错误,无法从 const char[] 转换为 char*问题解决
vs2017 :C2440 错误,无法从 const char[] 转换为 char*问题解决
1194 0
vs2017 :C2440 错误,无法从 const char[] 转换为 char*问题解决
基于SpringBoot的文件在线预览神器,支持99%的文件在线预览
kkFileView可以用来搭建文件在线预览服务,在Github上已有5.7k+Star。该项目使用流行的SpringBoot搭建,易上手和部署,基本支持主流办公文档的在线预览,如docx、xlsx、pptx、pdf、txt、zip、图片、视频、音频等等。项目特性可以参考下图。
|
10月前
|
机器学习/深度学习 算法 数据挖掘
基于GWO灰狼优化的CNN-LSTM的时间序列回归预测matlab仿真
本项目展示了一种结合灰狼优化(GWO)与深度学习模型(CNN和LSTM)的时间序列预测方法。GWO算法高效优化模型超参数,提升预测精度。CNN提取局部特征,LSTM处理长序列依赖,共同实现准确的未来数值预测。项目包括MATLAB 2022a环境下运行的完整代码及视频教程,代码内含详细中文注释,便于理解和操作。
|
数据采集 机器学习/深度学习 算法
Matlab函数——mapminmax
Matlab函数——mapminmax
324 0
|
机器学习/深度学习 算法
【MATLAB】基于EMD-PCA-LSTM的回归预测模型
【MATLAB】基于EMD-PCA-LSTM的回归预测模型
425 0
【MATLAB】基于EMD-PCA-LSTM的回归预测模型
|
机器学习/深度学习 安全 算法
【光伏功率预测】基于EMD-PCA-LSTM的光伏功率预测模型(Matlab代码实现)
【光伏功率预测】基于EMD-PCA-LSTM的光伏功率预测模型(Matlab代码实现)
【光伏功率预测】基于EMD-PCA-LSTM的光伏功率预测模型(Matlab代码实现)