【预测模型-BP分类】基于布谷鸟算法优化BP神经网络实现数据分类附matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。

🍎个人主页:Matlab科研工作室

🍊个人信条:格物致知。

更多Matlab仿真内容点击👇

智能优化算法  神经网络预测 雷达通信  无线传感器

信号处理 图像处理 路径规划 元胞自动机 无人机

⛄ 内容介绍

人工神经网络已成功应用到许多领域,如模式识别,机器学习,信号处理和信息融合等,但是,如果神经网络的学习算法或拓扑结构选择不当,可能导致出现神经网络的预测准确度低的问题.为此,许多研究者开始将元启发式优化算法应用于神经网络的性能优化.布谷鸟搜索算法(Cuckoo Search, CS)是一种新型的元启发式搜索算法,其只有一个控制参数,且布谷鸟搜索算法寻优过程简单,因此能够很好地协调全局搜索(Exploration)和局部搜索(Exploitation).本文将采用布谷鸟搜索算法应用于神经网络的权值和阈值优化.本文主要工作如下:本文在介绍了布谷鸟搜索算法和BP神经网络的基础上,提出了布谷鸟搜索算法优化BP神经网络的算法(CSBP),该算法以神经网络的训练误差为适应度函数,对神经网络的权值和阈值进行优化,它已成功应用到意大利葡萄酒分类的问题.

⛄ 部分代码

%% 读取训练数据 读进来后归一化存放在inputTrain中, outputTrain为训练数据的实际类别

%读取数据iris数据,该数据的特征为4维,类别一共3个类别

%f1,f2,f3,f4为特征,class为类别,1,2,3分别代表属于3个类别

rng('default')

[f1,f2,f3,f4,class] = textread('irisTrain.data', '%f%f%f%f%f', 'delimiter', ',');

%特征值归一化

[inputTrain,minI,maxI] = premnmx([f1 , f2 , f3 , f4 ]') ;

%构造输出矩阵

s = length(class) ;

outputTrain = zeros(s,3) ;

%output每行代表属于哪类,比如1,0,0代表第一类,0,1,0代表第二类,0,0,1代表第三类

for i = 1 : s

outputTrain(i , class(i)) = 1 ;

end

%% 读取测试数据 读进来后归一化存放在testInput中, outputTest为测试数据的实际类别

[t1 t2 t3 t4 classT] = textread('irisTest.data', '%f%f%f%f%f', 'delimiter', ',');

%测试数据归一化

testInput = tramnmx ( [t1,t2,t3,t4]' , minI, maxI );

s = length(classT) ;

outputTest = zeros(s,3) ;

%output每行代表属于哪类,比如1,0,0代表第一类,0,1,0代表第二类,0,0,1代表第三类

for i = 1 : s

outputTest(i , classT(i)) = 1 ;

end

%% 构造网络结构

%创建神经网络

inputnum = 4;     %inputnum  输入层节点数 4维特征

hiddennum = 10;     %hiddennum  隐含层节点数

outputnum = 3;     %outputnum  输出层节点数3维,比如1,0,0

net = newff( minmax(testInput) , [hiddennum outputnum] , { 'logsig' 'purelin' } , 'traingdx' ) ;

%设置训练参数

net.trainparam.show = 50 ;

net.trainparam.epochs = 200 ;

net.trainparam.goal = 0.01 ;

net.trainParam.lr = 0.01 ;

net = train( net, testInput , outputTest' ) ;

%测试测试集识别准确率

Y = sim( net , testInput );

Y = Y';

%统计分类正确率

count = 0;

for i = 1:size(Y,1)

   [~,index] = max(Y(i,:));

   [~,index1] = max(outputTest(i,:)); 

   if(index==index1)

       count = count+1;

   end

end

accuracy = count/size(Y,1);

sprintf('测试集识别正确率:%f',accuracy)

%测试训练集识别准确率

Y1 = sim( net , inputTrain );

Y1 = Y1';

%%统计识别误差

count1 = 0;

for i = 1:size(Y1,1)

   [~,index] = max(Y1(i,:));

   [~,index1] = max(outputTrain(i,:)); 

   if(index==index1)

       count1 = count1+1;

   end

end

accuracy = count1/size(Y1,1);

sprintf('训练集识别正确率:%f',accuracy)

⛄ 运行结果

⛄ 参考文献

[1]魏新尧, 佘世刚, 容伟,等. 基于布谷鸟算法优化BP神经网络的锂电池健康状态预测[J]. 计算机测量与控制, 2021, 029(004):65-69,75.

[2]易姣红. 基于布谷鸟搜索算法优化神经网络的研究. Diss. 长沙理工大学, 2014.

❤️ 关注我领取海量matlab电子书和数学建模资料

❤️部分理论引用网络文献,若有侵权联系博主删除

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

matlab科研助手

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

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

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

打赏作者

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

抵扣说明:

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

余额充值