1.pdist函数——计算构成样品对的样品之间的距离

% 5个样品,每个只测量一个指标,指标值存储在x中

x = [1, 2, 6, 8, 11]';

y = pdist(x)  % 计算样本间欧氏距离

D = squareform(y) % 将pdist得到的距离向量转化为矩阵距离,转回去用squareform(D,'tovector')

%**************************根据原始数据创建系统聚类树************************

Z = linkage(x, 'single', 'cityblock')

2.linkage函数——创建系统聚类树

%***************************分步聚类,绘制聚类树形图*************************

x = [1 2 6 8 11]';

y = pdist(x,'cityblock');   %绝对值距离

z = linkage(y,'single')   %‘single’指最短距离法

1     2     1

3     4     2

5     7     3

6     8     4

初始5个样本,所以是5类,类编号1-5,第一次聚类把1、2聚类归为编号6;第二次把3、4聚类归为编号7;

第三次把5、7聚类归为编号8;第四次把6、8聚类归为编号9,此时全部样品合并成一类,聚类结束。

3.dendrogram函数——作聚类树形图

obslabel = {'G1 = {1}';'G2 = {2}';'G3 = {6}';'G4 = {8}';'G5 = {11}'};

[H,T] = dendrogram(z,'orientation','Right','labels',obslabel);

set(H,'LineWidth',2,'Color','k')

xlabel('并类距离')

text(1.1,1.65,'G6')

text(2.1,3.65,'G7')

text(3.1,4.4,'G8')

text(4.1,3,'G9')

x = [1 2 6 8 11]';

opts = statset('Display','final');

idx = kmeans(x,3,'Distance','cityblock','Replicates',5,'Options',opts)

%后3对参数:绝对值距离;重复聚类5次,每次聚类采用新的初始值凝聚点;用于设置迭代算法

%****************************绘制聚类轮廓图*********************************