1.基本思想
层次聚类的基本思想是将数据集中的每个样本看作一个独立的簇,然后将这些簇逐步合并成更大的簇,直到最终形成一个包含所有样本的簇为止。这个过程可以用树状图(dendrogram)来表示,树状图的叶子节点表示每个样本,树的每个节点表示一个聚类,树的高度表示聚类的距离或相似度。
层次聚类分为两种方法:自上而下(AGNES)和自下而上(DIANA)。
自上而下方法(AGNES)从所有数据点作为单个簇开始,不断地将相邻的簇合并,直到所有点都在一个簇中。这种方法产生的树状图可以用来确定聚类的数量和最终的聚类结果。
自下而上方法(DIANA)从每个数据点作为一个簇开始,然后逐步将相似的簇合并,直到所有点都在一个簇中。这种方法对于处理大数据集比较高效。
在层次聚类中,簇之间的距离可以通过不同的距离度量方法(如欧几里得距离、曼哈顿距离、切比雪夫距离等)来计算,同时可以选择不同的聚类合并策略(如单链接、完全链接、平均链接等)来确定簇与簇之间的相似度。
2.数据集介绍
鸢尾花(Iris)数据集是一个经典的数据集,用于机器学习和统计学习中的分类和聚类问题。该数据集包含了三种不同类型的鸢尾花(山鸢尾、变色鸢尾和维吉尼亚鸢尾)的测量数据,每种花各有50个样本。每个样本包含四个特征,即萼片长度、萼片宽度、花瓣长度和花瓣宽度,以及它所属的鸢尾花类型。
该数据集最早由英国统计学家和生物学家Ronald Fisher在1936年的一篇论文中介绍,并一直被广泛用于分类和聚类问题的研究中。由于其简单性和广泛应用性,鸢尾花数据集已成为了机器学习和统计学习中的标准数据集之一。
本文采用的数据是.xlsx格式,前四列为样本的特征值,最后一列为样本的标签,标签值为1,2,3
3.文件结构
iris.xlsx % 鸢尾花数据集,具体格式参考第2部分
Main.m % 主函数
4.详细代码及注释
% 清空变量
warning off % 关闭报警信息
close all % 关闭开启的图窗
clear % 清空变量
clc % 清空命令行
% 读取数据
data = readtable('iris.xlsx');
X = table2array(data(:, 1:4));
% 调用层次聚类函数
Z = linkage(X, 'single');
% 'single'单连接(single linkage)
% 'complete'完全连接(complete linkage)
% 'average'平均连接(average linkage)
% 'weighted'加权连接(weighted linkage)
% 'centroid'中心连接(centroid linkage)
% 绘制聚类树状图
figure
dendrogram(Z)
title('Dendrogram of Iris Dataset')
xlabel('Samples')
ylabel('Distance')