1、模式识别实验模式识别实验报告 班 级:电子信息科学与技术13级02 班姓 名: 学 号: 指导老师:成 绩: 通信与信息工程学院二一六年实验一 最大最小距离算法1、实验内容1.熟悉最大最小距离算法,并能够用程序写出。2.利用最大最小距离算法寻找到聚类中心,并将模式样本划分到各聚类中心对应的类别中。2、实验原理N个待分类的模式样本,分别分类到聚类中心对应的类别之中。最大最小距离算法描述:(1)任选一个模式样本作为第一聚类中心。(2)选择离距离最远的模式样本作为第二聚类中心。(3)逐个计算每个模式样本与已确定的所有聚类中心之间的距离,并选出其中的最小距离。(4)在所有最小距离中选出一个最大的距离,
2、如果该最大值达到了的一定分数比值以上,则将产生最大距离的那个模式样本定义为新增的聚类中心,并返回上一步。否则,聚类中心的计算步骤结束。这里的的一定分数比值就是阈值,即有:(5)重复步骤(3)和步骤(4),直到没有新的聚类中心出现为止。在这个过程中,当有k个聚类中心时,分别计算每个模式样本与所有聚类中心距离中的最小距离值,寻找到N个最小距离中的最大距离并进行判别,结果大于阈值是,存在,并取为产生最大值的相应模式向量;否则,停止寻找聚类中心。(6)寻找聚类中心的运算结束后,将模式样本按最近距离划分到相应的聚类中心所代表的类别之中。三、实验结果及分析该实验的问题是书上课后习题2.1,以下利用的mat
3、lab中的元胞存储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运行结果可以看出,聚类中心为,以为聚类中心的点有,以为聚类中心的点有,以为聚类中心的有。同时,做出聚类分析后的分布图,如下:图中用蓝色大圈标记了聚类中心,用星号标记了以为聚类中心的样本,用三角符号标记了以以为聚类中心的样本,用红色小圈标记了以为聚类中心的样本,该程序成功进行了分类实验二 感知器算法一、实验内容1.熟悉感知器算法,并能够用程序写出。2.利用感知器
4、算法进行判别分类,算出判别函数,画出判别界面。2、实验原理直接用来对模式进行分类的准则函数。若分属于1,2的两类模式可用一方程来划分,那么称为判别函数,或称判决函数、决策函数。如,一个二维的两类判别问题,模式分布如图示,这些分属于1,2两类的模式可用一直线方程来划分。其中 式中: 为坐标变量。图2-1 两类二维模式的分布将某一未知模式 代入:若,则类;若,则类;若,则或拒绝。两类线性可分的模式类 ,设其中,应具有性质 对样本进行规范化处理,即2类样本全部乘以(1),则有: 感知器算法通过对已知类别的训练样本集的学习,寻找一个满足上式的权向量。感知器算法步骤: (1)选择N个分属于1和 2类的模
5、式样本构成训练样本集构成增广向量形式,并进行规范化处理。任取权向量初始值W(1),开始迭代。迭代次数k=1。(2)用全部训练样本进行一轮迭代,计算 的值,并修正权向量。分两种情况,更新权向量的值:1.分类器对第i个模式做了错误分类,权向量校正为:c:正的校正增量。2.若分类正确,权向量不变:,统一写为:(3)分析分类结果:只要有一个错误分类,回到(2),直至对所有样本正确分类。感知器算法是一种赏罚过程:分类正确时,对权向量“赏”这里用“不罚”,即权向量不变;分类错误时,对权向量“罚”对其修改,向正确的方向转换。3、实验结果与分析已知两类训练样本为:设,同样地,利用matlab元胞数组存储该两类
6、训练样本利用感知器算法,matlab运行得到如下结果:因此,可以得到感知器算法算出的判别函数为:利用matlab的画图函数画出判别界面以及样本点,得到如下的分布图: 由样本分布图可以看出,判别界面成功将两类训练样本分离。实验三 LMSE算法1、实验内容1.了解LMSE算法,并能够用程序写出。2.利用LMSE算法进行判别分类,算出判别函数,并画出判别界面。二、实验原理LMSE算法为最小平方误差算法,其算法过程如下:(1)将N个分属于类和类的n维模式样本写成增广形式,将属于的训练样本乘以(-1),写出规范化增广样本矩阵。(2)求的伪逆矩阵。(3)设置初值c和,c为正的校正增量,的各分量大于0,括号
7、中数字代表迭代次数k=1,开始迭代。(4)计算,进行可分性判别。如果,模式线性可分,解为,算法结束。如果,模式线性可分,有解。继续迭代。如果,停止迭代,检查是否大于0。若大于0,有解,否则无解,算法结束。(5)计算和先计算,再计算,迭代次数k加1,返回第(4)步。3、实验结果及分析该实验用的训练样本与感知器算法使用的样本一致,为以下两类训练样本:设定初始值,同样地利用matlab中的元胞数组存放训练样本点,通过编写matlab的LMSE程序可以得到以下结果:所以,LMSE算法求得的该两类训练样本的判别函数为利用matlab的画图函数画出判别界面以及样本点,得到如下的分布图: 由样本分布图可以看
8、出,LMSE算法所得的判别界面也成功将两类训练样本分离。实验四 Parzen窗估计1、实验内容1.了解Parzen窗概率密度的估计方法,能用程序实现。2.编写matlab程序,求解一个正态密度的Parzen窗估计。2、实验原理设区域是一个维的超立方体,并设是超立方体的棱长,则超立方体的体积为定义窗函数为由于是以原点为中心的一个超立方体,所以当落入到以为中心,体积为的超立方体时,否则,因此落入该超立方体内的样本数为是的第N次估计,则有所以联立上面两式得这个式子就是Parzen窗法的基本公式。3、实验结果与分析待估计的的均值为零,方差为的正态密度函数,利用matlab可以随机产生个,个,个学习样本
9、的样本集,选取正态窗函数并设,分别取,利用matlab可以得到不同取值下的估计结果。()当时得到的结果从图中可以看出,估计概率密度函数是一个样本为中心的小丘,误差很大。(2)当时得到的结果从图中可以看出,在时,噪声误差非常大,产生了不连续性。慢慢增大时,受到了平滑,但平均性误差也随之增大,分辨率降低。()当时得到的结果从下图可以看出,当增大到,估计量越来越好,在时,估计量很接近真实分布。从整个实验来看,Parzen窗法只要样本足够多,总可以保证收敛于任何复杂的未知概率密度函数,但是也受到值的影响,当太小时,就会造成不连续性,噪声误差增大。当太大时,分辨率就会下降,平均性误差就会增大。附录一最大
10、最小距离算法程序clear;clc;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;%取第一个点为一个聚类中心z1=X1;position(1)=1;%计算其它点到z1的距离for i=1:10 d(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;i
11、ndex=1; while(1) %循环求出其他距离并与事先设定的阈值作比较for i=1:10 d(flag,i)=dist(Xi,zflag); if min_dist(i)d(flag,i) min_dist(index)=d(flag,i); else min_dist(index)=min_dist(i); end index=index+1;endindex=1;max_dist=max(max(min_dist);x y=find(min_dist=max(min_dist);if(max_distT) flag=flag+1; zflag=Xy; position(flag)=
12、y;else break;endend fprintf(以下序号的样本为聚类中心:n);for i=1:flagfprintf(%dt,position(i);endfprintf(n=);%计算各样本到各聚类中心的距离for i=1:10 for j=1:flag distance(i,j)=dist(Xi,zj); endendflag1=1;flag2=1;distance2=distance;mincol I=min(distance2); %对10个样本进行聚类for i=1:10 for j=1:flag if(I(i)=j) array(j,flag1)=i; flag1=fla
13、g1+1; else continue; end endend%对聚类结果进行输出while(flag2=flag)fprintf(n第%d类的聚类中心为:%dn,flag2,position(flag2); fprintf(属于第%d类的有:n,flag2);for i=1:10 if(array(flag2,i)=0) fprintf(%dt,array(flag2,i); if flag2=1 plot(Xarray(flag2,i)(1),Xarray(flag2,i)(2),b*); hold on; end if flag2=2 plot(Xarray(flag2,i)(1),Xa
14、rray(flag2,i)(2),black); hold on; end if flag2=3 plot(Xarray(flag2,i)(1),Xarray(flag2,i)(2),ro); title(样本坐标聚类显示图); hold on; end endendfprintf(n);flag2=flag2+1;endgrid on;axis(0 8 0 9);hold onplot(Xposition(1)(1),Xposition(1)(2),o,Markersize,10);hold onplot(Xposition(2)(1),Xposition(2)(2),o,Markersize,10);hold onplot(Xposition(3)(1),Xp
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1