pnn设计.pptx
《pnn设计.pptx》由会员分享,可在线阅读,更多相关《pnn设计.pptx(20页珍藏版)》请在冰豆网上搜索。
![pnn设计.pptx](https://file1.bdocx.com/fileroot1/2022-10/7/fd1223d3-7900-4bd4-b46a-6ec3838a60d7/fd1223d3-7900-4bd4-b46a-6ec3838a60d71.gif)
主讲:
周润景教授单位:
电子信息工程学院,基于PNN的数据分类器设计,目录,概率神经网络简介基于PNN网络的聚类Matlab程序介绍及仿真结果结论,一.概率神经网络,概率神经网络(ProbabilisticNeuralNetwork,PNN)是D.F.Specht博士在1989年首先提出的,它是径向基函数(RadialBasisFunction,RBF)模型发展而来的一种前馈型神经网络,与传统的RBF不同,PNN是专门用于解决分类问题的人工神经网络。
其理论依据是贝叶斯最小风险准则(即Bayes决策理论),PNN将贝叶斯估计置于一个前馈神经网络中,其实质就是一个分类器,根据概率密度的无参数估计来进行Bayes决策从而得到分类结果,在分类和模式识别领域中被广泛应用。
网络模型,未知模式与标准模式间的相似度,求和估计各类的概率P(X|Ci),选出具有最大后验概率的类别,网络模型,输入层的传递函数是线性的,仅仅将输入样本完全不变的传递给模式层的各节点。
模式层与输入层之间通过连接权相连,进行加权求和,通过一个非线性算子运算后,传递给求和层。
求和层只是简单地将有对应样本中同一类的模式层传来的输入(属于某类的概率)进行累加,即得到输入样本属于该类的最大可能性。
第四层是竞争层,它接收从求和层输出的各类概率密函数,概率密度最大的那个神经元输出为1,即所对应的那一类即为待识别的样本模式类别,其他神经元的输出全为2,3,4。
PNN网络的优点,训练速度快,其训练时间仅仅略大于读取数据的时间;无论分类问题多么复杂,只要有足够训练样本,总可以保证获得贝叶斯准则下的最优解;允许增加或减少训练样本而无需重新进行长时间训练。
二.基于PNN网络的聚类设计,聚类步骤第一步:
采集数据第二步:
构建并训练网络;第三步:
对网络进行测试;第四步:
利用已经训练好的网络进行预测。
三.Matlab程序介绍及仿真结果,程序流程图:
Matlab中的主要代码,PNN工具箱函数及仿真函数介绍P=p1,p2,p3,p4,p5,p6,p7;%输入样本Tc%类别向量T=ind2vec(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:
UsersAdministratorDesktopRBFrbf_train_sample_data.dat);p=pConvert;%训练样本的目标矩阵t=importdata(C:
UsersAdministratorDesktopRBFrbf_train_target_data.dat);plot3(p(1,:
),p(2,:
),p(3,:
),o);grid;box;fori=1:
29,text(p(1,i),p(2,i),p(3,i),sprintf(%g,t(i),end%以图形方式输出训练样本点holdofff=t;index1=find(f=1);index2=find(f=2);,Matlab中的主要代码,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),linestyle,none,marker,+,color,y);box;gridon;holdon;axis(035000350003500);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(035000350003500)fori=1:
29,text(p(1,i),p(2,i),p(3,i),sprintf(%g,Ac(i),end%以图形方式输出训练结果holdofff=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(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;gridon;holdon;title(网络训练结果);xlabel(A);ylabel(B);zlabel(C);pause%对待分类样本进行分类pConvert=importdata(C:
UsersAdministratorDesktopRBFrbf_simulate_data.dat);p=pConvert;a=sim(net,p);ac=vec2ind(a),仿真结果,当训练数据为29组,测试数据为30组时的仿真图:
Spread=30时的分类结果,仿真结果,当训练数据为29组,测试数据为30组时的仿真图:
Spread=150时的分类结果,仿真结果,当训练数据为29组,测试数据为30组时MATLAB仿真结果:
Ac=1至29列11112222222333333334444444444ac=1至30列331342234133124243422331141333,仿真结果,以前14组数据作为训练样本,后45组数据作为测试样本,仿真结果如下:
Spread=40时的分类结果,仿真结果,以前14组数据作为训练样本,后45组数据作为测试样本,仿真结果如下:
Ac=34314132443442ac=1至27列23322332421344433134223433328至45列124243422331141333,四.总结,平滑因子spread的影响spread(平滑因子)的取值大小直接影响到最终的分类效果,所以选取合适的平滑因子在识别过程中显得尤为重要。
如果取值太大,密度估计比较平滑但细节丢失严重;取值太小,密度估计会呈现较多的尖峰突起。