1、模式识别实验报告实验一、最近邻规则的聚类算法一、实验要求编写采用最近邻规则的聚类算法,距离采用欧式距离,阈值可设定。采用二维特征空间中的10个样本对程序进行验证。x1=(0,0),x2=(3,8),x3=(2,2),x4=(1,1),x5=(5,3),x6=(4,8),x7=(6,3),x8=(5,4),x9=(6,4),x10=(7,5)。二、实验步骤1、选取距离阈值T,并且任取一个样本作为第一个聚合中心Z1,如:Z1=x1;2、计算样本x2到Z1的距离D21;若D21T,则x2Z1,否则令x2为第二个聚合中心,Z2=x2。设Z2=x2,计算x3到Z1和Z2的距离D31和D32。若D31T和
2、D32T,则建立第三个聚合中心Z3;否则把x3归于最近邻的聚合中心。依此类推,直到把所有的n个样本都进行分类。3、按照某种聚类准则考察聚类结果,若不满意,则重新选取距离阈值T、第一个聚合中心Z1,返回第二步处,直到满意,算法结束。三、程序设计详见附件1:test1.m。四、仿真结果0 1 2 3 4 5 6 7012345678 最近邻聚类算法:阈值T=0.1,第一个聚类中心(0,0)data1data2data3data4data5data6data7data8data9data100 1 2 3 4 5 6 7012345678 最近邻聚类算法:阈值T=0.1,第一个聚类中心(5,4)da
3、ta1data2data3data4data5data6data7data8data9data100 1 2 3 4 5 6 7012345678 最近邻聚类算法:阈值T=1,第一个聚类中心(0,0)data1data2data3data4data5data6data7data8data9data100 1 2 3 4 5 6 7012345678 最近邻聚类算法:阈值T=1,第一个聚类中心(5,4)data1data2data3data4data5data6data7data8data9data100 1 2 3 4 5 6 7012345678 最近邻聚类算法:阈值T=3,第一个聚类中心(
4、0,0)data1data2data3data4data5data6data7data8data9data100 1 2 3 4 5 6 7012345678 最近邻聚类算法:阈值T=3,第一个聚类中心(5,4)data1data2data3data4data5data6data7data8data9data100 1 2 3 4 5 6 7012345678 最近邻聚类算法:阈值T=6,第一个聚类中心(0,0)data1data2data3data4data5data6data7data8data9data100 1 2 3 4 5 6 7012345678 最近邻聚类算法:阈值T=6,第一
5、个聚类中心(5,4)data1data2data3data4data5data6data7data8data9data100 1 2 3 4 5 6 7012345678 最近邻聚类算法:阈值T=10,第一个聚类中心(0,0)data1data2data3data4data5data6data7data8data9data100 1 2 3 4 5 6 7012345678 最近邻聚类算法:阈值T=10,第一个聚类中心(5,4)data1data2data3data4data5data6data7data8data9data10五、结果分析1、考虑阈值对聚类的影响:由上述仿真结果可知,阈值大小
6、对于分类的影响非常大。当阈值小于1的时候,样本(10个)共分为10类;而当阈值大于10的时候,样本全分为1类;当阈值在其中时,随着阈值的变化分类页多样化。所以选取合适的阈值是正确分类的前提标准!2、考虑初始聚类中心对聚类的影响:在合适的阈值下,第一个聚类中心的选取对分类结果几乎没有什么影响;而相对的,阈值不合适的情况下,第一个聚类中心的选取对分类结果还是有一些影响,仿真结果会出现一些偏差。3、实验小结:综上可知,只有预先分析过样本,对阈值进行范围估算,再通过实验验证,才能得到合适的阈值,对样本进行正确分类,而初始聚合中心对其没有影响。实验二、k-均值聚类算法一、实验要求:编写k-均值聚类算法的
7、程序,对下列数据进行聚类。(0,0),(1,0),(0,1),(1,1),(2,1),(1,2),(2,2),(3,2),(6,6),(7,6),(8,6),(6,7),(7,7),(8,7),(9,7),(7,8),(8,8),(9,8),(8,9),(9,9).二、实验步骤1、给出n个混合样本,令I=1,表示迭代运算次数,选取c个初始聚合中心,j=1,2,c;2、计算每个样本与聚合中心的距离,。若,则。3、计算c个新的聚合中心:,。4、判断:若,则I=I+1,返回第二步b处,否则结束。三、程序设计详见附件2:test2.m。四、仿真结果1、类别数目一定时,初始聚类中心对聚类的影响:0 1
8、2 3 4 5 6 7 8 90123456789K-均值聚类算法:类别数c=2,初始聚合中心为(0,0),(1,1)0 1 2 3 4 5 6 7 8 90123456789K-均值聚类算法:类别数c=2,初始聚合中心为(0,0),(6,6)0 1 2 3 4 5 6 7 8 90123456789K-均值聚类算法:类别数c=2,初始聚合中心为(1,1),(7,8)0 1 2 3 4 5 6 7 8 90123456789K-均值聚类算法:类别数c=2,初始聚合中心为(3,2),(9,9)初始聚合中心为(0,0),(2,2),(5,5),(7,7),(9,9)0 1 2 3 4 5 6 7
9、8 90123456789 K-均值聚类算法:类别数目c=5初始聚合中心为(1,1),(3,3),(6,6),(7,7)(8,8)0 1 2 3 4 5 6 7 8 90123456789 K-均值聚类算法:类别数目c=52、类别数目对聚类的影响:初始聚合中心为(0,0)0 1 2 3 4 5 6 7 8 90123456789 K-均值聚类算法:类别数目c=1初始聚合中心为(0,0),(9,9)0 1 2 3 4 5 6 7 8 90123456789 K-均值聚类算法:类别数目c=2初始聚合中心为(0,0),(5,5),(9,9)0 1 2 3 4 5 6 7 8 90123456789
10、K-均值聚类算法:类别数目c=3初始聚合中心为(0,0),(2,2),(7,7),(9,9)0 1 2 3 4 5 6 7 8 90123456789 K-均值聚类算法:类别数目c=4初始聚合中心为(0,0),(2,2),(5,5),(7,7),(9,9)0 1 2 3 4 5 6 7 8 90123456789 K-均值聚类算法:类别数目c=5五、结果分析1、类别数目一定时,考虑初始聚合中心对聚类的影响:由上述仿真结果可知,当类别数目为1和2时,初始聚合中心对聚类没有影响。但当C=2时,该类别属于正确分类。而类别数目大于2时,初始聚合中心对聚类的影响非常大,仿真结果多样化,不能作为分类标准。
11、2、考虑类别数目对聚类的影响:当类别数目变化时,结果也随之出现变化。3、总结综上可知,只有预先分析过样本,确定合适的类别数目,才能对样本进行正确分类,而初始聚合中心对其没有影响。实验三、感知器算法一、实验要求:使用感知器算法给出区分两类模式的判别函数。1=(x1,x2)=(1,0,1),(0,1,1)2=(x3,x4)=(1,1,0),(0,1,0)二、实验步骤1、初始化:给定一个训练模式集x1,x2,xN,其中每个类别已知,它们分属于1,2;xi(xi1, xi2,xin)T为n维向量,增广为(n+1)维向量:xi(xi1,xi2,xin,1);2类样本乘以1;权向量w为(n+1)维向量。2
12、、置步数k=1,令增量C为常数,且C0,分别赋予初始增广权矢量w(1)的各分量较小的任意值。3、输入训练模式xk,计算判别函数值wT(k)xk4、调整增广权矢量,规则是:如果wT(k)xk0,则w(k+1)=w(k)+Cxk;如果wT(k)xk0,则w(k+1)=w(k);5、如果kdj(x)任意ji,则判xi。1、赋初值,分别给c个权矢量wi(1)(i=1,2,c)赋任意的初值,选择正常数,置步数k=1;2、输入符号未规范化的增广训练模式xk,xkx1,x2xN,计算c个判别函数:di(xk)=wi(k)xk(i=1,2,c);3、调整增广权矢量,规则是:a、如果xki和di(xk)dj(x
13、k)(任意ji),则:wi(k+1)=wi(k)(i=1,2,c)b、如果xki和dl(xk)di(xk)(li)则:wi(k+1)=wi(k)+xkwl(k+1)=wl(k)-xkwj(k+1)=wj(k)(任意jl,i)4、如果kN,令k=k+1,返至2。如果k=N,则检验判别函数wix对x1,x2xN,是否都能正确分类。若是,结束;若不是,令k=1,返至2。三、程序设计详见附件4:test4.m。四、仿真结果假设初始的权矢量皆为w1=w2=w3=w4=1111T。1、输入步长c的值:1w(:,:,1,1)=4.0000-0.9000 -4.60001.0000w(:,:,1,2)=8.0
14、000-7.20009.00001.0000w(:,:,1,3)=-3.70004.6000 12.70000w(:,:,1,4)=-11.6000-4.7000-10.6000-1.0000D=11.3800 -78.6600 -13.5400 2.980017.8700 -78.2200 -23.4800 -3.67009.9600 108.3800 24.4400-124.480021.6700 65.5600 -35.3200 -29.5100-24.7900 -0.5000 50.2300 0.7100-28.0900 -65.9400 77.4200 -30.510020.3300
15、 11.2800 -86.8800 108.55002.6400-136.9400 -65.7900 177.12000 0 0 1.00002、输入步长c的值:0.5w(:,:,1,1)=2.50000.0500 -1.80001.0000w(:,:,1,2)=4.5000-3.10005.00001.0000w(:,:,1,3)=-1.35002.8000 6.85000.5000w(:,:,1,4)=-5.3000-1.8500-4.80000D= 7.8900 -37.1300 -4.5700 3.690011.4850 -36.5600 -9.1900 0.715010.5800 5
16、9.7900 17.8200 -56.640011.2850 33.2300 -17.2100 -14.3050-11.6950 0.4500 25.8150 1.0550-9.5950 -28.5200 43.1600 -10.80503.1150 -1.4100 -50.4900 47.2250-6.1300 -75.9200 -40.3450 81.11000 0 0 1.00003、输入步长c的值:0.1w(:,:,1,1)=1.30000.8100 0.44001.0000w(:,:,1,2)=1.70000.18001.80001.0000w(:,:,1,3)=0.53001.36
17、00 2.17000.9000w(:,:,1,4)=-0.26000.4300-0.16000.8000D= 5.0980 -3.9060 2.6060 4.25806.3770 -3.2320 2.2420 4.223011.0760 20.9180 12.5240 -2.36802.9770 7.3660 -2.7220 -2.1410-1.2190 1.2100 6.2830 1.33105.2010 1.4160 15.7520 4.9590-10.6570 -11.5620 -21.3780 -1.8350-13.1460 -27.1040 -19.9890 4.30200 0 0 1.0000五、结果分析虽然选取的步长(即增量)不同,其计算得到的权矢量和判别函数也不尽相同。但是,通过对判别函数值得检验,发现所有分类都是正确的。