【预测模型】基于人工鱼群算法优化BP神经网络实现数据分类matlab代码

145 阅读2分钟

1 简介

人工鱼群算法是一种基于自然界鱼群的生活行为而提出的一种智能优化算法。人工鱼群算法由于其诸多优点自从提出来后就得到了广泛的应用,这是群体智能算法的一个典型应用,是人们在群体智能研究的方面的又一个重要成就。人工鱼群算法可以简单的描述为:在自然界的一片水域中,鱼类一般是通过随机自由游动来寻找食物的,在寻找食物的过程中,鱼类往往聚集成群,这是鱼类长期自然选择形成的生活习性。一般情况下,鱼个数较多的地方往往是食物也较多的地方。人工鱼群算法就是通过模 仿自然鱼的觅食、聚群、追尾、随机游动的行为而形成的一种优化算法。

2 部分代码

%读取训练数据
[f1,f2,f3,f4,class] = textread('trainData.txt' , '%f%f%f%f%f',150);

%特征值归一化
%[input,minI,maxI] = premnmx( [f1 , f2 , f3 , f4 ]') ;
[input,inputps]=mapminmax([f1 , f2 , f3 , f4 ]');

%构造输出矩阵
s = length( class ) ;
output = zeros( s , 3 ) ;
for i = 1 : s 
  output( i , class( i ) ) = 1 ;
end

%构建神经网络
net = newff( minmax(input) , [7 3] , { 'logsig' 'purelin' } , 'traingdx' ) ;
%鱼群算法优化权值和阈值
[net,e_iter,passed_times]=af_lwb(net,input,output);
%设置训练参数
net.trainparam.show = 50 ;
net.trainparam.epochs = 500 ;
net.trainparam.goal = 0.01 ;
net.trainParam.lr = 0.01 ;
%开始训练
net = train( net, input , output' ) ;
%读取测试数据
[t1 t2 t3 t4 c] = textread('testData.txt' , '%f%f%f%f%f',150);
%测试数据归一化
[testInput,testInputps]=mapminmax([t1,t2,t3,t4]');

%仿真
Y = sim( net , testInput )

%统计识别正确率
[s1 , s2] = size( Y ) ;
hitNum = 0 ;
for i = 1 : s2
  [m , Index] = max( Y( : ,  i ) ) ;
   if( Index  == c(i)   ) 
       hitNum = hitNum + 1 
   end
end
sprintf('识别率是 %3.3f%%',100 * hitNum / s2 )

3 仿真结果

4 参考文献

[1]曹承志, 张坤, 郑海英,等. 基于人工鱼群算法的BP神经网络速度辨识器[J]. 系统仿真学报, 2009(4):4.