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次,每次聚类采用新的初始值凝聚点;用于设置迭代算法
%****************************绘制聚类轮廓图*********************************