1、模式识别实验报告班 级: 电子信息科学与技术 13 级 02 班姓 名: 学 号: 指导老师:成 绩:通信与信息工程学院二一六年1实验一 最大最小距离算法1、实验内容1. 熟悉最大最小距离算法,并能够用程序写出。2. 利用最大最小距离算法寻找到聚类中心,并将模式样本划分到各聚类中心对应的类别中。2、实验原理N 个待分类的模式样本 ,分别分类到聚类中心NX,21,对应的类别之中。Z,21,最大最小距离算法描述:(1)任选一个模式样本作为第一聚类中心 。1Z(2)选择离 距离最远的模式样本作为第二聚类中心 。1Z 2(3)逐个计算每个模式样本与已确定的所有聚类中心之间的距离,并选出其中的最小距离。
2、(4)在所有最小距离中选出一个最大的距离,如果该最大值达到了的一定分数比值以上,则将产生最大距离的那个模式样本定义为新增21Z的聚类中心,并返回上一步。否则,聚类中心的计算步骤结束。这里的的一定分数比值就是阈值 ,即有:21 T1021Z(5)重复步骤(3)和步骤(4) ,直到没有新的聚类中心出现为止。在这个过程中,当有 k 个聚类中心 时,分别计算每个模式样本与所有N,21,聚类中心距离中的最小距离值,寻找到 N 个最小距离中的最大距离并进行判别,结果大于阈值 是, 存在,并取为产生最大值的相应模式向量;否则,停T1kZ止寻找聚类中心。(6)寻找聚类中心的运算结束后,将模式样本 按最近NiX
3、,21,2距离划分到相应的聚类中心所代表的类别之中。三、实验结果及分析该实验的问题是书上课后习题 2.1,以下利用的 matlab 中的元胞存储 10个二维模式样本X1=0;0;X2=1;1;X3=2;2;X4=3;7;X5=3;6;X6=4;6;X7=5;7;X8=6;3;X9=7;3;X10=7;4;利用最大最小距离算法,matlab 运行可以求得从 matlab 运行结果可以看出,聚类中心为 ,以 为聚类中心的971,X1点有 ,以 为聚类中心的点有 ,以 为聚类中心的有321,X7 654,。同时,做出聚类分析后的分布图,如下:098,0 1 2 3 4 5 6 7 801234567
4、89 估估估估估估估估估图中用蓝色大圈标记了聚类中心,用星号标记了以 为聚类中心的样本,1X3用三角符号标记了以以 为聚类中心的样本,用红色小圈标记了以 为聚类7X 9X中心的样本,该程序成功进行了分类实验二 感知器算法一、实验内容1. 熟悉感知器算法,并能够用程序写出。2. 利用感知器算法进行判别分类,算出判别函数,画出判别界面。2、实验原理直接用来对模式进行分类的准则函数。若分属于 1, 2的两类模式可用一方程 来划分,那么称 为判别函数,或称判决函数、决策函数。0)(Xd)(Xd如,一个二维的两类判别问题,模式分布如图示,这些分属于 1, 2两类的模式可用一直线方程 来划分。其中 式中:
5、 0)( 0)(321wx为坐标变量。21,x图 2-1 两类二维模式的分布将某一未知模式 代入:X321)(wxd0)(Xd 2x 1xO 1 2 4若 ,则 类;0)(Xd1若 ,则 类;2若 ,则 或拒绝。)(21X或两类线性可分的模式类 ,设 其中,21,XWdT)(, 应具有性质 T121,nwWT21,nx21,0)(XWd对样本进行规范化处理,即 2类样本全部乘以(1),则有: )T感知器算法通过对已知类别的训练样本集的学习,寻找一个满足上式的权向量。感知器算法步骤: (1)选择 N 个分属于 1 和 2 类的模式样本构成训练样本集构成增广向量形式,并进行规范化处理。任取权向量初
6、始值X,2,W(1),开始迭代。迭代次数 k=1。(2)用全部训练样本进行一轮迭代,计算 的值,并修正权向量。ikXW分两种情况,更新权向量的值:1. 分类器对第 i 个模式做了错误分类,权向量校正为:,若 0TikXWick1c:正的校正增量。2. 若 分类正确,权向量不变: ,统一写为:0TikXkW10)(,)()1( kTkckXW(3)分析分类结果:只要有一个错误分类,回到(2) ,直至对所有样本正确分类。5感知器算法是一种赏罚过程:分类正确时,对权向量“赏”这里用“不罚” ,即权向量不变;分类错误时,对权向量“罚”对其修改,向正确的方向转换。3、实验结果与分析已知两类训练样本为:
7、TT)1,(0,)1,(,0:(21设 ,同样地,利用 matlab 元胞数组存储该两类训练样T),()1W本利用感知器算法,matlab 运行得到如下结果:因此,可以得到感知器算法算出的判别函数为: 132)(1xXd利用 matlab 的画图函数画出判别界面以及样本点,得到如下的分布图:6由样本分布图可以看出,判别界面成功将两类训练样本分离。实验三 LMSE 算法1、实验内容1. 了解 LMSE 算法,并能够用程序写出。2. 利用 LMSE 算法进行判别分类,算出判别函数,并画出判别界面。二、实验原理LMSE 算法为最小平方误差算法,其算法过程如下:(1)将 N 个分属于 类和 类的 n
8、维模式样本写成增广形式,将属于12的训练样本乘以(-1) ,写出规范化增广样本矩阵 。2 X(2)求 的伪逆矩阵 。XTX-1#)(3)设置初值 c 和 ,c 为正的校正增量, 的各分量大于 0,括号)1(B)1(B中数字代表迭代次数 k=1,开始迭代。(4)计算 ,进行可分性判别。)()(kkWe如果 ,模式线性可分,解为 ,算法结束。0)(如果 ,模式线性可分,有解。继续迭代。)(ke如果 ,停止迭代,检查 是否大于 0。若大于 0,有解,否则)(kX无解,算法结束。(5)计算 和)1(kW)(B先计算 ,再计算 ,迭代(|kce )1()1(#kkBXW次数 k 加 1,返回第(4)步。
9、3、实验结果及分析该实验用的训练样本与感知器算法使用的样本一致,为以下两类训练样本:7TT)1,(0,)1,(,0:(21设定初始值 ,同样地利用 matlab 中的元胞数组存放训T),()B练样本点,通过编写 matlab 的 LMSE 程序可以得到以下结果:所以,LMSE 算法求得的该两类训练样本的判别函数为 12)(31xXd利用 matlab 的画图函数画出判别界面以及样本点,得到如下的分布图:由样本分布图可以看出,LMSE 算法所得的判别界面也成功将两类训练样本分离。实验四 Parzen 窗估计1、实验内容1.了解 Parzen 窗概率密度的估计方法,能用程序实现。2.编写 matl
10、ab 程序,求解一个正态密度的 Parzen 窗估计。82、实验原理设区域 是一个 维的超立方体,并设 是超立方体的棱长,则超立方体NRdNh的体积为定义窗函数 为)(u其 他,0,21;1)( djuj 由于 是以原点为中心的一个超立方体,所以当 落入到以 为中心,)(u iX体积为 的超立方体时, ,否则 ,因此落入NV1/)()NihXu0)(u该超立方体内的样本数为 Niihk1)(是 的第 N 次估计,则有)(XpN NNVkXp/)(所以联立上面两式得 NiNiNhVXp1)()(这个式子就是 Parzen 窗法的基本公式。3、实验结果与分析待估计的 的均值为零,方差为的正态密度函
11、数,利用 matlab 可以)(Xp随机产生个,个,个学习样本 的样本集,选取正态窗函数iX21)(ue并设 , 分别取 ,利用 matlab 可以得到不同取值下的Nh14.01.25,9估计结果。()当 时得到的结果0.4,125.hN,-5 0 500.10.20.30.4 估估估估估-5 0 500.511.52N=1,h1=0.25估Parzen估估估-5 0 500.10.20.30.4 N=1,h1=1估Parzen估估估-5 0 50.040.060.080.1 N=1,h1=4估Parzen估估估从图中可以看出,估计概率密度函数是一个样本为中心的小丘,误差很大。()当 时得到的
12、结果0.4,125.6hN,-5 0 500.10.20.30.4 估估估估估-5 0 500.511.5N=16,h1=0.25估Parzen估估估-5 0 500.20.40.60.8 N=16,h1=1估Parzen估估估-5 0 500.10.20.30.4 N=16,h1=4估Parzen估估估从图中可以看出,在 时,噪声误差非常大,产生了不连续性。慢2.1h10慢增大 时,受到了平滑,但平均性误差也随之增大,分辨率降低。1h()当 时得到的结果0.4,125.6hN,从下图可以看出,当 增大到 ,估计量越来越好,在 时,估计量641h很接近真实分布。-5 0 500.10.20.3
13、0.4 估估估估估-5 0 500.20.40.60.8N=256,h1=0.25估Parzen估估估-5 0 500.20.40.60.8 N=256,h1=1估Parzen估估估-5 0 500.20.40.60.8 N=256,h1=4估Parzen估估估从整个实验来看,Parzen 窗法只要样本足够多,总可以保证收敛于任何复杂的未知概率密度函数,但是也受到 值的影响,当 太小时,就会造成不连NhNh续性,噪声误差增大。当 太大时,分辨率就会下降,平均性误差就会增大。N11附录一 最大最小距离算法程序clear;clc;X1=0;0;X2=1;1;X3=2;2;X4=3;7;X5=3;6
14、;X6=4;6;X7=5;7;X8=6;3;X9=7;3;X10=7;4;%取第一个点为一个聚类中心z1=X1;position(1)=1;%计算其它点到 z1 的距离for i=1:10d(i)=dist(Xi,z1);end%找到距离 z1 最远的点的位置max_dist=max(d);pos=find(d=max(d);z2=Xpos;position(2)=pos;rate=0.5;%分数比值设置为 0.5T=rate*dist(z1,z2);%初始阈值min_dist=d;flag=2;index=1;while(1) %循环求出其他距离并与事先设定的阈值作比较for i=1:10d
15、(flag,i)=dist(Xi,zflag);if min_dist(i)d(flag,i)min_dist(index)=d(flag,i);elsemin_dist(index)=min_dist(i);endindex=index+1;endindex=1;max_dist=max(max(min_dist);x y=find(min_dist=max(min_dist);if(max_distT)12flag=flag+1; zflag=Xy;position(flag)=y;elsebreak;endendfprintf(以下序号的样本为聚类中心:n);for i=1:flagfp
16、rintf(%dt,position(i);endfprintf(n=);%计算各样本到各聚类中心的距离for i=1:10for j=1:flagdistance(i,j)=dist(Xi,zj);endendflag1=1;flag2=1;distance2=distance;mincol I=min(distance2);%对 10 个样本进行聚类for i=1:10for j=1:flagif(I(i)=j)array(j,flag1)=i;flag1=flag1+1;else continue;endendend%对聚类结果进行输出while(flag2=0flag=1;break;
17、endendk=k+1;B(k,:)=B(k-1,:)+c*(e+abs(e);end if flag=1fpritf(该模式样本线性不可分n);elsefprintf(求得判别函数为:t );fprintf(d(X)=(%s*x1)+(%s*x2)+(%s*x3)+(%s)n,num2str(W(k,1),num2str(W(k,2),num2str(W(k,3),num2str(W(k,4);for i=1:4w2i=w2i.*-1;endx1=-2:0.01:2;x2=-2:0.01:2;x1 x2=meshgrid(x1,x2);16x3=(W(k,1)*x1+W(k,2)*x2+W(
18、k,4)/(-1*W(k,3);surf(x1,x2,x3);hold for i=1:4plot3(w1i(1),w1i(2),w1i(3),b*);plot3(w2i(1),w2i(2),w2i(3),r);endendtitle(LMSE 算法判别界面及样本分布图 );附录四 Parzen 估计算法程序clc;clear;X=randn(1,3000);px=normpdf(X,0,1);% N=1 的情况 %pNx1_1=parzen(0.25,1,X);pNx1_2=parzen(1,1,X);pNx1_3=parzen(4,1,X);subplot(221);plot(X,px,.
19、);grid on;title(原概率分布);subplot(222)plot(X,pNx1_1,.);grid on;title(N=1,h1=0.25 的 Parzen 窗估计 );subplot(223);plot(X,pNx1_2,.);grid on;title(N=1,h1=1 的 Parzen 窗估计);subplot(224);plot(X,pNx1_3,.);grid on;title(N=1,h1=4 的 Parzen 窗估计);% N=16 的情况 %pNx16_1=parzen(0.25,16,X);pNx16_2=parzen(1,16,X);pNx16_3=parz
20、en(4,16,X);figure;subplot(221);plot(X,px,.);grid on;title(原概率分布);subplot(222)17plot(X,pNx16_1,.);grid on;title(N=16,h1=0.25 的 Parzen 窗估计);subplot(223);plot(X,pNx16_2,.);grid on;title(N=16,h1=1 的 Parzen 窗估计 );subplot(224);plot(X,pNx16_3,.);grid on;title(N=16,h1=4 的 Parzen 窗估计 );% N=256 的情况 %pNx256_1=
21、parzen(0.25,256,X);pNx256_2=parzen(1,256,X);pNx256_3=parzen(4,256,X);figure;subplot(221);plot(X,px,.);grid on;title(原概率分布);subplot(222)plot(X,pNx256_1,.);grid on;title(N=256,h1=0.25 的 Parzen 窗估计 );subplot(223);plot(X,pNx256_2,.);grid on;title(N=256,h1=1 的 Parzen 窗估计);subplot(224);plot(X,pNx256_3,.);grid on;title(N=256,h1=4 的 Parzen 窗估计);function pNx=parzen(h1,N,x)pNx=zeros(1,3000);hN=h1/sqrt(N);for j=1:3000for i=1:NpNx(j)=pNx(j)+exp(x(j)-x(i)/hN).2/-2)/sqrt(2*pi);endpNx(j)=pNx(j)/hN/N;end