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

简介: 【预测模型-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电子书和数学建模资料
❤️部分理论引用网络文献,若有侵权联系博主删除


相关文章
|
3月前
|
机器学习/深度学习 算法 机器人
【水下图像增强融合算法】基于融合的水下图像与视频增强研究(Matlab代码实现)
【水下图像增强融合算法】基于融合的水下图像与视频增强研究(Matlab代码实现)
390 0
|
3月前
|
算法 定位技术 计算机视觉
【水下图像增强】基于波长补偿与去雾的水下图像增强研究(Matlab代码实现)
【水下图像增强】基于波长补偿与去雾的水下图像增强研究(Matlab代码实现)
174 0
|
3月前
|
算法 机器人 计算机视觉
【图像处理】水下图像增强的颜色平衡与融合技术研究(Matlab代码实现)
【图像处理】水下图像增强的颜色平衡与融合技术研究(Matlab代码实现)
146 0
|
3月前
|
新能源 Java Go
【EI复现】参与调峰的储能系统配置方案及经济性分析(Matlab代码实现)
【EI复现】参与调峰的储能系统配置方案及经济性分析(Matlab代码实现)
146 0
|
3月前
|
机器学习/深度学习 算法 机器人
使用哈里斯角Harris和SIFT算法来实现局部特征匹配(Matlab代码实现)
使用哈里斯角Harris和SIFT算法来实现局部特征匹配(Matlab代码实现)
210 8
|
3月前
|
机器学习/深度学习 编解码 算法
基于OFDM技术的水下声学通信多径信道图像传输研究(Matlab代码实现)
基于OFDM技术的水下声学通信多径信道图像传输研究(Matlab代码实现)
224 8
|
3月前
|
机器学习/深度学习 数据采集 测试技术
基于CEEMDAN-VMD-BiLSTM的多变量输入单步时序预测研究(Matlab代码实现)
基于CEEMDAN-VMD-BiLSTM的多变量输入单步时序预测研究(Matlab代码实现)
131 8
|
3月前
|
机器学习/深度学习 算法 自动驾驶
基于导向滤波的暗通道去雾算法在灰度与彩色图像可见度复原中的研究(Matlab代码实现)
基于导向滤波的暗通道去雾算法在灰度与彩色图像可见度复原中的研究(Matlab代码实现)
223 8
|
3月前
|
机器学习/深度学习 供应链 算法
【电动车】基于削峰填谷的电动汽车多目标优化调度策略研究(Matlab代码实现)
【电动车】基于削峰填谷的电动汽车多目标优化调度策略研究(Matlab代码实现)
160 0
|
3月前
|
传感器 机器学习/深度学习 算法
【无人机协同】动态环境下多无人机系统的协同路径规划与防撞研究(Matlab代码实现)
【无人机协同】动态环境下多无人机系统的协同路径规划与防撞研究(Matlab代码实现)
270 0

热门文章

最新文章