matlab中的linkage和cluster函数
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⼜聚成⼀类,⼀次类推。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论