Linkage:

Agglomerative hierarchical cluster tree(凝聚成层次聚类树)

语法:

解释:

Z=linkage(x),返回Z,是一个X矩阵中行的分层聚类树(用最短距离算法生成具有层次结构的聚类树)。输入的X为pdist函数输出的距离向量矩阵(pdist函数参考上篇文章)

Z=linkage(x,method),使用指定的method创建树

Z=linkage(x,method,metric)利用度量来计算

Z=linkage(x,method,pdist_input)将参数传递给pdist函数。。。。

Z=linkage(x,method,metric,’savememory’,value)当value为true时使用一种内存保存算法,当value为false时使用标准算法。

Z=linkage(Y),用距离矩阵Y表示,Y可以是由pdist函数计算出的,也可以是一个更一般的矩阵

Z=linkage(Y,method)用指定的method创建树,method描述了 如何测量集群之间的距离。

Single:最短距离(缺省)

Complete:最大距离

Average:平均距离

Centroid:重心距离

Ward:离差平方和

输出Z:

Z是一个(m-1)-乘3矩阵,m是原始数据中行的数量。Z的第1和2列包含成对的集群索引,以形成一个二叉树。叶节点从1到m.叶节点是由所有更高的集群组成的单例集群。每一个新形成的集群,对应于第Z行(I,:),被分配索引m+I。Z(I,1:2)包含构成集群m+I的两个组件集群的索引。有m-1更高的集群,对应于集群树的内部节点。Z(I,3)包含在第Z行(I::)中合并的两个簇之间的链接距离。

例如,假设有30个初始节点,第12步集群5和集群7合并。假设它们的距离是1。5。然后Z(12,:)是5 7 1。5。新形成的集群将有索引12+30=42。如果集群42出现在后面一行中,则意味着第12步中创建的集群将被合并到更大的集群中。

比如:

根据结果画出二叉树如下:

第一列,第二列为类的表示,叶子节点为原始数据的行数,1,2之间最短距离为2.2061,聚类为6(原始行数累加所得)

Cluters:

Construct agglomerative clusters from linkages(从聚类树结构中构建聚类)

语法:

解释:

T=cluster(Z,’cutoff’,c): 从聚集的层次化集群树Z中构造集群。Z是一个大小的矩阵(m-1)-乘3(由linkage函数生成),m是原始数据中行的数量。c是将Z切割成集群的阈值。当一个节点及其所有子节点的值都小于c时,集群就会形成,所有节点在节点或下面的所有叶子都被分组到一个集群中。t是一个大小为m的向量,包含每个观察的群集分配。如果c是一个向量,那么T是一个集群分配的矩阵,每个截止值都有一个列

T=cluster(Z,’cutoff’,c,’depth’,d): 通过观察每个节点下面的深度d来评估不一致的值。默认的深度是2。

T=cluster(Z,’cutoff’,c,’criterion’,criterion): 使用指定的标准来形成集群,其中标准是字符串“inconsistent”(默认)或“depth”。“depth”标准使用在节点上合并的两个子节点之间的距离来测量节点高度。在一个节点的高度小于c的节点的所有叶节点都被分组到一个集群中。

T=cluster(Z,’maxclust’,n): 用“depth”准则构造一个最大的n个集群。集群找到最小的高度,通过树的水平切割留下n个或更少的集群。

如果n是一个向量,那么T是一个集群分配矩阵,每个最大值是一个列。

如;

                                                 

从上边的聚类树和结果的比较中可以得出,当分为5类时,每个节点单独是一类,聚成4类时,标号1和标号2聚成第4,其他单独为一类;当聚成3类时,更具聚类树,原始数据的标号3和标号5又聚成一类,一次类推。

matlab中的linkage和cluster函数的更多相关文章

  1. MATLAB中提高fwrite和fprintf函数的I/O性能

    提高fwrite和fprintf函数的I/O性能 http://www.matlabsky.com/thread-34861-1-1.html     今天我们将讨论下著名的fwrite(fprint ...

  2. matlab中求解线性方程组的rref函数

    摘自:http://www.maybe520.net/blog/987/ matlab中怎么求解线性方程组呢? matlab中求解线性方程组可应用克拉默法则(Cramer's Rule)即通过det( ...

  3. Matlab中常见的神经网络训练函数和学习函数

    一.训练函数 1.traingd Name:Gradient descent backpropagation (梯度下降反向传播算法 ) Description:triangd is a networ ...

  4. matlab中m文件与m函数的学习与理解

    1. m文件与m函数的区别 所谓 MATLAB 程序,大致分为两类: M 脚本文件 (M-Script) 和 M 函数 (M-function), 它们均是普通的 ASCII 码构成的文件. M 脚本 ...

  5. MATLAB中导入数据:importdata函数

    用load函数导入mat文件大家都会.可是今天我拿到一个数据,文件后缀名竟然是'.data'.该怎么读呢? 我仅仅好用matlab界面Workspace区域的"import data&quo ...

  6. matlab中的size(),length(),ndims()函数的使用方法

    1.size()使用方法: size(a)表示矩阵每一个维度的长度 比方size([1 2 3;4 5 6]) 等于[2 3]: 表示他有2行3列. size([1 2 3]) 等于[1 3]: 表示 ...

  7. Matlab中的cell、size函数

    参考网址:http://blog.sina.com.cn/s/blog_5efed5800100exmj.html Cell函数 如果p为一个数,那么h(1)=p,是没有问题的. 如果p为一个向量,那 ...

  8. matlab中fix, floor, ceil, round 函数的使用方法

    转载: https://www.ilovematlab.cn/thread-91895-1-1.html Matlab取整函数有: fix, floor, ceil, round.具体应用方法如下: ...

  9. MATLAB中产生随机数的那些函数

    1.产生从imin~imax的m*n矩阵 randi([imin,imax],m,n); 2.产生1~n的无重复随机整数 randperm(n);

随机推荐

  1. Windows:condition_variable 两个例子

    题目:子线程循环 10 次,接着主线程循环 100 次,接着又回到子线程循环 10 次,接着再回到主线程又循环 100 次,如此循环50次,试写出代码.注意:一定是子线程先执行,主线程再执行. #in ...

  2. Angular24 树形菜单 ???

    待更新... 2018年5月21日15:17:47 参考博文01 参考博文02

  3. springMVC+spring+mybatis整合(包括文件上传和下载)

    driver=com.mysql.jdbc.Driver url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncod ...

  4. jqgrid扩展 获取表单数据

    $.fn.GetPostData = function () { var data = {}; var k = false; $(this).find(".datacontrol" ...

  5. C# 把本地文件上传到服务器上,和从服务器上下载文件

    方法一.通过Ajax方式上传文件(input file),使用FormData进行Ajax请求 <div  > <input type="file" name=& ...

  6. WCF项目问题2-无法激活服务,因为它需要 ASP.NET 兼容性。没有未此应用程序启用 ASP.NET 兼容性。请在 web.config 中启用 ASP.NET 兼容性,或将 AspNetCompatibilityRequirementsAttribute.AspNetCompatibilityRequirementsMode 属性设置为 Required 以外的值。

    无法激活服务,因为它需要 ASP.NET 兼容性.没有未此应用程序启用 ASP.NET 兼容性.请在 web.config 中启用 ASP.NET 兼容性,或将 AspNetCompatibility ...

  7. C# DateTime.ToString()的各种日期格式

    DateTime.ToString()的各种日期格式 例: ToString:2016/9/27 0:00:00 ToString("yyyy/MM/dd"):2016/09/27 ...

  8. Java主线程如何等待子线程执行结束(转)

    工作中往往会遇到异步去执行某段逻辑, 然后先处理其他事情, 处理完后再把那段逻辑的处理结果进行汇总的产景, 这时候就需要使用线程了. 一个线程启动之后, 是异步的去执行需要执行的内容的, 不会影响主线 ...

  9. C#转java

    懂C#的话,转Java也不是那么难,毕竟,语言语法还是相似的.尝试了下Java,说说自己的体会吧. 一,Java和C#都是完全面向对象的语言.在面向对象编程的三大原则方面,这两种语言接近得不能再接近. ...

  10. 【C#】 ref out

    ref 通常我们向方法中传递的是值,方法获得的是这些值的一个拷贝,然后使用这些拷贝,当方法运行完毕后,这些拷贝将被丢弃,而原来的值不会受到影响. 这种情况是通常的,当然还有另外一种情况,我们向方法传递 ...