当前位置:文档之家› PNN神经网络聚类法模式分类思想

PNN神经网络聚类法模式分类思想

目录摘要 (1)1概率神经网络 (1)1.1网络模型 (1)1.2分类思想 (2)1.3 PNN分类的优点 (3)2 PNN网络的构建 (3)2.1 构建步骤 (3)2.2 Matlab中的主要代码 (4)3 Matlab编程及结果分析 (4)3.1 Matlab中的编程 (4)3.2 仿真结果分析 (7)3.3 结论 (10)4 总结 (11)参考文献 (12)PNN神经网络聚类法摘要近几年来,对于神经网络的研究越来越普遍,神经网络在我们社会生活中的作用也越来越不可替代,尤其在模式识别的领域里,更是有着举足轻重的作用。

酒是由多种成分按不同的比例构成的,兑酒时需要三种原料(X,Y,Z),现在已测出不同酒中三种原料的含量,本文正是基于PNN神经网络针对酒中X、Y、Z三种含量的不同来对酒进行识别分类。

本文首先介绍了PNN神经网络的网络模型以及它对不同的模式进行分类判别的思想,然后针对本文的酒类判别的要求来构建PNN网络,并在Matlab中进行编程仿真,最后对所仿真的结果进行了分析比较,最后找出最优的模式分类。

1概率神经网络概率神经网络(Probabilistic Neural Networks,PNN)是由D. F. Specht在1990年提出的。

主要思想是用贝叶斯决策规则,即错误分类的期望风险最小,在多维输入空间内分离决策空间。

它是一种基于统计原理的人工神经网络,它是以Parzen 窗口函数为激活函数的一种前馈网络模型。

PNN吸收了径向基神经网络与经典的概率密度估计原理的优点,与传统的前馈神经网络相比,在模式分类方面尤其具有较为显著的优势。

1.1网络模型PNN的结构如图1所示,共由四层组成。

图1 概率神经网络结构概率神经网络PNN 是径向基网络的一个分支,是前馈网络的一种。

它是一种有监督的网络的分类器,基于概率统计思想,由Bayes 分类规则构成,采用Parzen 窗函数密度估计方法估算条件概率,进行分类模式识别。

PNN 的结构模型如图,共分四层:输入层、样本层(又称模式层)、求和层和决策层(又称竞争层输出层)。

对应网络输入X=[x1,x2,…xm]T ,其输出为Y=[y1,y2,…,yL]T ,输入向量为m ,待匹配的类别数为L 。

1.2分类思想在PNN 的神经网络模型中,输入层中的神经元数目等于学习样本中输入向量的m ,各神经元是简单的分布单元,直接将输入变量传递给样本层。

样本层的节点数由输入样本和待匹配类别的乘积决定,为m*L 。

样本层是将输入节点传来的输入进行加权求和,然后经过一个激活函数运算后,再传给求和层。

这里激活函数采用高斯函数,则输出为:))2/||(||exp(22∑--=ii i c x σθ式中i c 为径向基函数的中心,i σ表示特性函数第i 个分量对弈的开关参数。

些层中每个节点均为RBF 的中心,采用的特性函数为径向基函数—高斯函数,计算未知模式与标准模式间相似度。

求和层各单元只与相应类别的模式单元相连,各单元只依据Parzen 方法求和估计各类的概率,即其条件概率为:∑=---∏=ni L Ti mm i X X X X nC X P 122/]2)()(exp[1)2(1)|(σσ式中i C 为类别,X 为识别样本,i X 为类别i 的模式样本(在概率神经网络中做为权值),m 为向量维数,σ为平滑参数,n 为类i 的模式样本数量。

先验概率记为P(X)。

决策层节点数等于待匹配类别数,为L 。

根据各类对输入向量概率的估计,采用Bayes 分类规则,选择出具有最小“风险”的类别,即具有最大后验概率的类别,可用下式来表达其决策方法对所有i ,j ≠))(/()()|(j j i i C P C X P C P C X P则输出y(X)=i C 。

与其它方法相比较,PNN 不需进行多次充分的计算,就能稳定收敛于Bayes 优化解。

在训练模式样本一定的情况下,只需进行平滑因子的调节,网络收敛快。

平滑因子值的大小决定了模式样本点之间的影响程度,关系到概率密度分布函数的变化。

通常,网络只要求经验地给定一个平滑因子。

1.3 PNN 分类的优点PNN 是一种可用于模式分类的人工神经网络,其实质是基于贝叶斯最小风险准则发展而来的一种并行算法,相比BP 网络,其主要优点为: (1) 训练速度快;(2) 在足够训练样本下,总可以保证获得贝叶斯准则下的最优解;(3) 只考虑样本空间的概率特性,允许增加训练样本而无需重新进行长时间的训练。

2 PNN 网络的构建2.1 构建步骤第一步:采集数据;本文采集的是兑酒所需要的三种原料的数据。

第二步:训练网络;选取该厂的30个样本数据作为训练和测试的数据。

以其中的20个数据作为训练样本,以1、2、3、4四类酒作为期望输出矢量。

训练网络从而得到酒类识别的PNN 网络模型。

第三步:进行网络性能测试;网络训练完成后,10个数据作为测试样本,进行网络性能检验。

将各层神经元间的连接权值代回网络中,对训练样本进行回归模拟;当训练样本的期望值输出与PNN 网络的仿真输出完全重合时,这说明网络已训练成功,可用来预测未知样本的类别。

第四步:利用已训练好的网络进行预测;利用已建好的PNN 网络来对未知的20组样本数据进行分类。

2.2 Matlab中的主要代码用Matlab实现过程的主要源代码如下:P=[p1,p2,p3,p4,p5,p6,p7]; %输入样本Tc %类别向量T=ind2vec(Tc); %转为目标分类向量;Net=newpnn(P,T,N); %创建一个PNN, SPREAD=NY=sim(net,P); %仿真Yc=vec2ind(Y); %转为类别向量输出网络训练结束后,输出层各节点和输入模式类的特定关系已确定,因此可用作模式分类器,当输入一个SPREAD值后,网络将对输入自动进行分类。

3 Matlab编程及结果分析3.1 Matlab中的编程前30组数据用来学习,利用训练好的PNN网络来对后20组数据进行预测。

Matlab中的源程序如下:clear all;P=[2232.43 3077.87 1298.871580.1 1752.07 2463.041962.4 1594.97 1835.951495.18 1957.44 3498.021125.17 1594.39 2937.7324.22 3447.31 2145.011269.07 1910.72 2701.971802.07 1725.81 1966.351817.36 1927.4 2328.791860.45 1782.88 1875.131237.91 2055.13 3405.09688.94 2104.72 3198.511675.65 1747.23 1580.391806.02 1810.19 2191.1274.56 3288.02 2433.87307.35 3363.84 2021.611988.27 1657.51 2069.22173.92 2608.55 1803.57372.16 3077.44 2163.46576.6 2140.98 33201724.13 1704.49 1798.752501.21 2652.65 984.561656.94 1913.34 2459.07362.51 3150.03 2472565.74 2284.97 3024.581978.06 1536.13 2375.641661.06 1552.4 2005.05790.29 2419.98 3051.161557.27 1746.27 1879.13];P=P';C=[2 3 3 1 1 4 1 3 3 3 1 1 3 3 4 4 3 2 4 1 3 2 3 4 1 3 3 1 3]; T=ind2vec(C);%将类别向量C 转换为目标向量Tt1=clock;%开始计时net=newpnn(P,T,50);%网络创建A=vec2ind(sim(net,P));datat1=etime(clock,t1)save netpnn net;clear all;load netpnn net;T1=[2793.36 3009.26 1073.55 1766.08 1803.14 1895.18 1207.88 1600.62 3123.07 245.75 3373.67 2248.45 2785.36 3052.81 1035.65 315.42 3088.29 2187.12 1243.28 2451.72 3111.99 829.84 1555.91 3139.21 1347.07 2364.31 3096.88 1926.98 1507.34 1626.47 1808.57 1608.78 1565.95 1124.1 1840.98 2819.41 2661 3302.39 1710.32 1805.55 1899.09 2400.6 1130.18 1902.42 2753.7 1355.19 1566.16 2927.81 1651.14 1774.03 1725.56 2110.63 3308.04 702.06 2788.11 3395.23 1684.45 1807.61 1680.56 2356.65 1363.58 1729.44 2749.55 1992.42 1526.9 1581.42 ];T1=T1';t2=clock;y=sim(net,T1);yc=vec2ind(y);B=vec2ind(sim(net,T1));datat2=etime(clock,t2)yccolr=zeros(4,3);for i=1:4colr(i,:)=rand(1,3);endfor i=1:4a=find(yc==i)p=plot3(T1(1,a),T1(2,a),T1(3,a),'*');axis([200 3200 1200 3500 1000 3200])hold on;grid on;box;set(p,'Color',colr(i,:));endfor i=1:4,text(T1(1,i)+0.1,T1(2,i),T1(3,i),sprintf('%g',yc(i))),endtitle('Testing the network.')3.2 仿真结果分析在前面章节中我们已经提到,平滑因子N 的重要性,N的取值直接影响着我们最后的分类结果。

下面是采用不同的平滑因子所的结果:当N=1时,仿真结果如下:datat1 =1.3590datat2 =0.4840yc =1 1 1 1 1 1 1 1 1 11 1 1 1 1 1 1 1 1 1 11data1和data2分别为PNN网络的训练时间和预测时间,yc是输出的酒的类别。

相关主题