(MATLAB)层次聚类
前言 参考书: 齐敏《模式识别导论》 参考: 论坛 附上截图: 代码 close all; clear all; clc; m=4; n=2; X=randn(m,n); %产生一个m*n的随机项矩阵,这里用4*2矩阵,数据量较小 Y=pdist(X); % 计算 X 中各对行向量的相互距离,得到的Y为行向量 %Y %进行查看 y=squareform(Y) %转换为方阵更易于观察 y % z=linkage(y) %dendrogram(z) Z=linkage(Y); %产生层次聚类树 dendrogram(Z) %可视化层次聚类树 Z %Z是一个(m-1)*3的矩阵,Z数组的前两列是索引下标列,最后一列是距离列 效果图如下: 其中,横坐标为index,纵坐标为距离。比如,图中2号和4号的距离为1.0228。 打印出来的: 分析: 对于上面图中的y,其元素表示的是距离。比如第一行中,第一行第一列的0表示1号到1号的距离,第一行第二列的2.7916可以表示1号到2号的距离,第一行第三列的1.5193是1号到3号的距离,以此类推。 根据层次聚类的原理,按照输出数据y算一下。先要找出y中非0的最小值。在矩阵y中是1.0228,位于第四行第二列,表示2号和4号的距离。因此先要将2号和4号合并起来归为一类,标记为(m+1)号,即5号。之后 更新1、3、5号之间的距离 ,1