c均值算法c 实现实验报告.doc

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
模式识别 实验二 c均值算法 PAGE \* MERGEFORMAT 1 1实验目的 熟悉c均值算法,通过程序语言实现该算法,比较每个聚类的初始均值不同时,算法结果的差别。理解动态聚类算法的算法思想。 2实验内容和要求 写程序实现c均值算法,并用表中的三维数据进行测试,下面给出了每种测试的类别数目和初始值。不要求编程环境,可以使用C,MATLAB等。 (1)c=2, m1(0)=(1,1,1)T, m2(0)=(-1,1,-1)T。 (2)c=2, m1(0)=(0,0,0)T, m2(0)=(1,1,-1)T。 将(2)得到的结果与(1)中的结果进行比较,并解释差别,包括迭代次数的差别。 (3)c=3, m1(0)=(0,0,0)T, m2(0)=(1,1,1)T, m3(0)=(-1,0,2)T。 (4)c=3, m1(0)=(-0.1,0,0.1)T, m2(0)=(0,-0.1,0.1)T, m3(0)=(-0.1,-0.1,0.1)T。 将(4)得到的结果与(3)中的结果进行比较,并解释差别,包括迭代次数的差别。 数据如下表所示: 样本编号 1 -7.82 -4.58 -3.97 2 -6.68 3.16 2.71 3 4.36 -2.19 2.09 4 6.72 0.88 2.80 5 -8.64 3.06 3.50 6 -6.87 0.57 -5.45 7 4.47 -2.62 5.76 8 6.73 -2.01 4.18 9 -7.71 2.34 -6.33 10 -6.91 -0.49 -5.68 11 6.18 2.81 5.82 12 6.72 -0.93 -4.04 13 -6.25 -0.26 0.56 14 -6.94 -1.22 1.13 15 8.09 0.20 2.25 16 6.18 0.17 -4.15 17 -5.19 4.24 4.04 18 -6.38 -1.74 1.43 19 4.08 1.30 5.33 20 6.27 0.93 -2.78 3实验原理 K均值聚类,即众所周知的C均值聚类,已经应用到各种领域。它的核心思想如下:算法把n个向量xj(1,2…,n)分为c个组Gi(i=1,2,…,c),并求每组的聚类中心,使得非相似性(或距离)指标的价值函数(或目标函数)达到最小。当选择欧几里德距离为组j中向量xk与相应聚类中心ci间的非相似性指标时,价值函数可定义为: (6.2) 这里是组i内的价值函数。这样Ji的值依赖于Gi的几何特性和ci的位置。 一般来说,可用一个通用距离函数d(xk,ci)代替组I中的向量xk,则相应的总价值函数可表示为: (6.3) 为简单起见,这里用欧几里德距离作为向量的非相似性指标,且总的价值函数表示为(6.2)式。 划分过的组一般用一个c×n的二维隶属矩阵U来定义。如果第j个数据点xj属于组i,则U中的元素uij为1;否则,该元素取0。一旦确定聚类中心ci,可导出如下使式(6.2)最小uij: (6.4) 重申一点,如果ci是xj的最近的聚类中心,那么xj属于组i。由于一个给定数据只能属于一个组,所以隶属矩阵U具有如下性质: (6.5) 且 (6.6) 另一方面,如果固定uij则使(6.2)式最小的最佳聚类中心就是组I中所有向量的均值: , (6.7) 这里|Gi|是Gi的规模或。 为便于批模式运行,这里给出数据集xi(1,2…,n)的K均值算法;该算法重复使用下列步骤,确定聚类中心ci和隶属矩阵U: 步骤1:初始化聚类中心ci,i=1,…,c。典型的做法是从所有数据点中任取c个点。 步骤2:用式(6.4)确定隶属矩阵U。 步骤3:根据式(6.2)计算价值函数。如果它小于某个确定的阀值,或它相对上次价值函数质的改变量小于某个阀值,则算法停止。 步骤4:根据式(6.5)修正聚类中心。返回步骤2。 该算法本身是迭代的,且不能确保它收敛于最优解。K均值算法的性能依赖于聚类中心的初始位置。所以,为了使它可取,要么用一些前端方法求好的初始聚类中心;要么每次用不同的初始聚类中心,将该算法运行多次。此外,上述算法仅仅是一种具有代表性的方法;我们还可以先初始化一个任意的隶属矩阵,然后再执行迭代过程。 4实验结果与分析 4.1当 c=2时, m1(0)=(1,1,1)T, m2(0)=(-1,1,-1)T m1(0)=(0,0,0)T, m2(0)=(1,1,-1)T current Je i

文档评论(0)

小教资源库 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档