层次聚类在MATLAB中实现
By:Yang Liu
1.第一种方法
(1)输入要聚类的数据。
(2)计算各个样本之间的欧氏距离。
(3)把距离化成矩阵,矩阵中的元素
X
i
j
{X_{ij}}
Xij表示第i个样本和第j个样本的距离。
(4)生成聚类数矩阵,前两列表示是第几簇,最后一列表示两个簇的距离,原样本一共5个元素,所以初始有5簇,则当完成一次聚类后,新得到的簇,就是第六簇(此例中第六簇就是第四簇和第五簇合并产生),以此类推。
(5)生成可视化树状图
(6)按需求划分,例中为划分三簇,T为各个样本划分到第几簇的结果。
2.第二种方法
测试结果:
结果矩阵C含义:第一次把第四和第五样本分成一簇;第二次把第一和第二样本分成一簇;第三次把第三四五样本分成一簇,第四次把所有样本分成一簇。
若要把样本分成N簇,则查看倒数第N行。
假设要把样本分成三簇,则通过观察倒数第三行可知第四个和第五个样本为一簇,第一个和第二个样本为一簇,第三个样本为一簇,最终结果与第一种方法所得结果完全一致。
参考文献:
(1)https://blog.csdn.net/henu111/article/details/81512314
(2)https://blog.csdn.net/qq278672818/article/details/62038527