【预测模型-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)

⛄ 运行结果

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

⛄ 参考文献

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

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

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

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

 

你可能感兴趣的:(神经网络预测,算法,分类,神经网络)