MATLAB的统计工具箱中的多元统计分析中提供了聚类分析的两种方法.docVIP

MATLAB的统计工具箱中的多元统计分析中提供了聚类分析的两种方法.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
MATLAB的统计工具箱中的多元统计分析中提供了聚类分析的两种方法

MATLAB的统计工具箱中的多元统计分析中提供了聚类分析的两种方法: 1.层次聚类 hierarchical clustering 2.k-means聚类 这里用最简单的实例说明以下层次聚类原理和应用发法。 层次聚类是基于距离的聚类方法,MATLAB中通过pdist、linkage、dendrogram、cluster等函数 来完成。层次聚类的过程可以分这么几步: (1) 确定对象(实际上就是数据集中的每个数据点)之间的相似性,实际上就是定义一个表征对 象之间差异的距离,例如最简单的平面上点的聚类中,最经常使用的就是欧几里得距离。 这在MATLAB中可以通过Y=pdist(X)实现,例如 X=randn(6,2) X = -0.4326???? 1.1892 -1.6656??? -0.0376 0.1253???? 0.3273 0.2877???? 0.1746 -1.1465??? -0.1867 1.1909???? 0.7258 plot(X(:,1),X(:,2),bo)??? %给个图,将来对照聚类结果把 Y=pdist(X) Y = Columns 1 through 14 1.7394???? 1.0267???? 1.2442???? 1.5501???? 1.6883???? 1.8277???? 1.9648???? 0.5401???? 2.9568???? 0.2228???? 1.3717???? 1.1377???? 1.4790???? 1.0581 Column 15 2.5092 例子中X数据集可以看作包含6个平面数据点,pdist之后的Y是一个行向量,15个元素分别代表X 的第1点与2-6点、第2点与3-6点,......这样的距离。那么对于M个点的数据集X,pdist之后的Y 将是具有M*(M-1)/2个元素的行向量。Y这样的显示虽然节省了内存空间,但对用户来说不是很易 懂,如果需要对这些距离进行特定操作的话,也不太好索引。MATLAB中可以用squareform把Y转 换成方阵形式,方阵中i,j位置的数值就是X中第i和第j点之间的距离,显然这个方阵应该是 个对角元素为0的对称阵。 squareform(Y) ans = 0???? 1.7394???? 1.0267???? 1.2442???? 1.5501???? 1.6883 1.7394????????? 0???? 1.8277???? 1.9648???? 0.5401???? 2.9568 1.0267???? 1.8277????????? 0???? 0.2228???? 1.3717???? 1.1377 1.2442???? 1.9648???? 0.2228????????? 0???? 1.4790???? 1.0581 1.5501???? 0.5401???? 1.3717???? 1.4790????????? 0???? 2.5092 1.6883???? 2.9568???? 1.1377???? 1.0581???? 2.5092????????? 0 这里需要注意的是,pdist可以使用多种参数,指定不同的距离算法。help pdist把。 另外,当数据规模很大时,可以想象pdist产生的Y占用内存将是很吓人的,比如X有10k个数据点 ,那么X占10k*8*2Bytes=160K,这看起来不算啥,但是pdist后的Y会有10k*10k/2*8Bytes=400M 。怕了把,所以,废话说在前面,用MATLAB的层次聚类来处理大规模数据,大概是很不合适的。 (2) 确定好了对象间的差异度(距离)后,就可以用Z=linkage(Y)来产生层次聚类树了。 Z=linkage(Y) Z = 3.0000???? 4.0000???? 0.2228 2.0000???? 5.0000???? 0.5401 1.0000???? 7.0000???? 1.0267 6.0000???? 9.0000???? 1.0581 8.0000??? 10.0000???? 1.3717 对于M个元素的X,前面说了Y是1行M*(M-1)/2的行向量,Z则是(M-1)*3的矩阵。 Z数组的前两列是索引下标列,最后一列是距离列。例如上例中表示在产生聚类树的计算过程中 ,第3和第4点先聚成一类,他们之间的距离是0.2228,以此类推。要注意的是,为了标记每一个 节点,需要给新产生的聚类也安排一个标识,MATLAB中会将新产生的聚类依次用M+1,M+2,....依 次来标识。比如第3和第4点聚成的类以后就用7来标识,第2和第5点聚成的类用8来标识,依次类 推。 通过linkage函数计算之后,实际上二叉树式的聚类已经

文档评论(0)

ranfand + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档