1、主 讲:周润景 教授单 位:电子信息工程学院,基于PNN的数据分类器设计,目 录,概率神经网络简介基于PNN网络的聚类Matlab程序介绍及仿真结果结论,一.概率神经网络,概率神经网 络(Probabilistic Neural Network,PNN)是 D.F.Specht 博士在 1 989 年首先提出的,它是径向基函数(Radial Basis Function,RBF)模型发展而来的一种前馈型神经网络,与传统的 RBF 不同,PNN是专门用于解决分类问题的人工神经网络。其理论依据是贝叶斯最小风险准则(即 Bayes 决策理论),PNN将贝叶斯估计置于一个前馈神经网络中,其实质就是一个
2、分类器,根据概率密度的无参数估计来进行 Bayes 决策从而得到分类结果,在分类和模式识别领域中被广泛应用。,网络模型,未知模式与标准模式间的相似度,求和估计各类的概率P(X|Ci),选出具有最大后验概率的类别,网络模型,输入层的传递函数是线性的,仅仅将输入样本完全不变的传递给模式层的各节点。模式层与输入层之间通过连接权相连,进行加权求和,通过一个非线性算子运算后,传递给求和层。求和层只是简单地将有对应样本中同一类的模式层传来的输入(属于某类的概率)进行累加,即得到输入样本属于该类的最大可能性。第四层是竞争层,它接收从求和层输出的各类概率密函数,概率密度最大的那个神经元输出为1,即所对应的那一
3、类即为待识别的样本模式类别,其他神经元的输出全为 2,3,4。,PNN网络的优点,训练速度快,其训练时间仅仅略大于读取数据的时间;无论分类问题多么复杂,只要有足够训练样本,总可以保证获得贝叶斯准则下的最优解;允许增加或减少训练样本而无需重新进行长时间训练。,二.基于PNN网络的聚类设计,聚类步骤 第一步:采集数据 第二步:构建并训练网络;第三步:对网络进行测试;第四步:利用已经训练好的网络进行预测。,三.Matlab程序介绍及仿真结果,程序流程图:,Matlab中的主要代码,PNN工具箱函数及仿真函数介绍P=p1,p2,p3,p4,p5,p6,p7;%输入样本Tc%类别向量T=ind2vec(
4、Tc);%转为目标分类向量;Net=newpnn(P,T,spread);%创建一个PNN网络Y=sim(net,P);%仿真Yc=vec2ind(Y);%转为类别向量输出,Matlab中的主要代码,输出数据分类的图形程序f1=ac;%ac为分类标号index1=find(f1=1);%输出第一类数据index2=find(f1=2);%输出第二类数据index3=find(f1=3);%输出第三类数据index4=find(f1=4);%输出第四类数据,Matlab中的主要代码,完整程序代码clear;clc;%网络训练样本pConvert=importdata(C:UsersAdminis
5、tratorDesktopRBFrbf_train_sample_data.dat);p=pConvert;%训练样本的目标矩阵t=importdata(C:UsersAdministratorDesktopRBFrbf_train_target_data.dat);plot3(p(1,:),p(2,:),p(3,:),o);grid;box;for i=1:29,text(p(1,i),p(2,i),p(3,i),sprintf(%g,t(i),end%以图形方式输出训练样本点hold offf=t;index1=find(f=1);index2=find(f=2);,Matlab中的主要代
6、码,index3=find(f=3);index4=find(f=4);line(p(1,index1),p(2,index1),p(3,index1),linestyle,none,marker,*,color,g);line(p(1,index2),p(2,index2),p(3,index2),linestyle,none,marker,*,color,r);line(p(1,index3),p(2,index3),p(3,index3),linestyle,none,marker,+,color,b);line(p(1,index4),p(2,index4),p(3,index4),l
7、inestyle,none,marker,+,color,y);box;grid on;hold on;axis(0 3500 0 3500 0 3500);title(训练用样本及其类别);xlabel(A);ylabel(B);zlabel(C);pauset=ind2vec(t);spread=30;,Matlab中的主要代码,%PNN网络的创建和训练过程net=newpnn(p,t,spread);A=sim(net,p);Ac=vec2ind(A)plot3(p(1,:),p(2,:),p(3,:),.),grid;box;axis(0 3500 0 3500 0 3500)for
8、i=1:29,text(p(1,i),p(2,i),p(3,i),sprintf(%g,Ac(i),end%以图形方式输出训练结果hold offf=Ac;index1=find(f=1);index2=find(f=2);index3=find(f=3);index4=find(f=4);line(p(1,index1),p(2,index1),p(3,index1),linestyle,none,marker,*,color,g);line(p(1,index2),p(2,index2),p(3,index2),linestyle,none,marker,*,color,r);line(p
9、(1,index3),p(2,index3),p(3,index3),linestyle,none,marker,+,color,b);line(p(1,index4),p(2,index4),p(3,index4),linestyle,none,marker,+,color,y);,Matlab中的主要代码,box;grid on;hold on;title(网络训练结果);xlabel(A);ylabel(B);zlabel(C);pause%对待分类样本进行分类pConvert=importdata(C:UsersAdministratorDesktopRBFrbf_simulate_d
10、ata.dat);p=pConvert;a=sim(net,p);ac=vec2ind(a),仿真结果,当训练数据为29组,测试数据为30组时的仿真图:,Spread=30时的分类结果,仿真结果,当训练数据为29组,测试数据为30组时的仿真图:,Spread=150时的分类结果,仿真结果,当训练数据为29组,测试数据为30组时MATLAB仿真结果:Ac=1 至 29 列1 1 1 1 2 2 2 2 2 2 2 3 3 33 3 3 3 3 4 4 4 4 4 4 4 4 4 4ac=1 至 30 列3 3 1 3 4 2 2 3 4 1 3 3 1 24 2 4 3 4 2 2 3 3 1
11、1 4 1 3 3 3,仿真结果,以前14组数据作为训练样本,后45组数据作为测试样本,仿真结果如下:,Spread=40时的分类结果,仿真结果,以前14组数据作为训练样本,后45组数据作为测试样本,仿真结果如下:Ac=3 4 3 1 4 1 3 2 4 4 3 4 4 2ac=1 至 27 列2 3 3 2 2 3 3 2 4 2 1 3 4 44 3 3 1 3 4 2 2 3 4 3 3 328 至 45 列1 2 4 2 4 3 4 2 2 3 3 1 1 41 3 3 3,四.总结,平滑因子spread的影响 spread(平滑因子)的取值大小直接影响到最终的分类效果,所以选取合适的平滑因子在识别过程中显得尤为重要。如果取值太大,密度估计比较平滑但细节丢失严重;取值太小,密度估计会呈现较多的尖峰突起。,
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1