Matlab聚类分析相关函数

(一)pdist

使用方法:Y = pdist(X, ‘metric’)

表示用’metric’指定的方法计算矩阵X中对象间的距离。其中:

  • 矩阵X为 matlab聚类算法实现 matlab中聚类函数_数学建模 矩阵,可看作 matlab聚类算法实现 matlab中聚类函数_matlab聚类算法实现_02matlab聚类算法实现 matlab中聚类函数_算法_03
  • 输出的Y是包含距离信息的长度为 matlab聚类算法实现 matlab中聚类函数_matlab_04 的行向量,由于距离的两两组合后的距离,所以由排列组合可知共有 matlab聚类算法实现 matlab中聚类函数_matlab_04

下面是’metric’常用字符串值:

字符串

含义

‘euclidean’

欧式距离(默认)

‘seuclidean’

标准欧几里得距离

‘cityblock’

绝对值距离

‘minkowski’

闵氏距离

‘chebychev’

切比雪夫距离

‘mahalanobis’

马氏距离

注意:使用闵氏距离时,Y = pdist(X, ‘minkowski’, p),其中p为闵氏距离计算需要用到的指数值,默认为2.

(二)linkage

使用方法:Z = linkage(Y, ‘method’)

表示使用由’method’指定的算法计算生成聚类树,其中:

  • Y为pdist函数输出的 matlab聚类算法实现 matlab中聚类函数_matlab_04
  • Z为包含聚类树信息的 matlab聚类算法实现 matlab中聚类函数_matlab_07 矩阵。每一行表示一个类(样本)和另一个类(样本)的合并,所以相当于每一个样本都要合并一次,而第一次合并是两个样本进行的,所以总共有 matlab聚类算法实现 matlab中聚类函数_数学建模_08 行。
  • 第一二列表示两个合并类(样本),其中:matlab聚类算法实现 matlab中聚类函数_数学建模_09 表示初始样本;超过 matlab聚类算法实现 matlab中聚类函数_数学建模_10 的是由样本组成的类,记作 matlab聚类算法实现 matlab中聚类函数_matlab_11 ,其中 matlab聚类算法实现 matlab中聚类函数_数学建模_10 为样本总数,matlab聚类算法实现 matlab中聚类函数_数学建模_13 表示该类是在第 matlab聚类算法实现 matlab中聚类函数_数学建模_13
  • 第三列表示对应两个类(样本)间的距离。

下面是’method’常用的字符串:

字符串

含义

‘single’

最短距离(默认)

‘average’

无权平均距离

‘centroid’

重心距离

‘complete’

最大距离

‘median’

赋权重心距离

‘ward’

离差平方和方法

‘weighted’

赋权平均距离

(三)cluster

使用方法:T = cluster(Z, ‘cutoff’, c)

表示将由linkage产生的信息矩阵Z分成c类,其中:

  • Z为linkage函数生成的 matlab聚类算法实现 matlab中聚类函数_matlab_07
  • c 表示分成类的数量
  • T为长度为 matlab聚类算法实现 matlab中聚类函数_matlab聚类算法实现_02

(四)dendrogram

使用方法(常用):

  • H = dendrogram(Z, P)
  • H = dendrogram(Z, P, ‘ColorThreshold’, cutoff)

表示画出由linkage产生的信息矩阵Z对应的聚类树状图。其中:

  • Z为linkage函数生成的 matlab聚类算法实现 matlab中聚类函数_matlab_07
  • P为树状图显示的最大基础类数量(结点数量),默认值为30,0表示全部画出
  • ‘ColorThreshold’ 表示不同类显示不同颜色
  • cutoff与’ColorThreshold’ 配合使用,表示不同颜色类的最小距离

举例

(一)
clc, clear;	% 清除页面和工作区
a = [1,0;1,1;3,2;4,3;2,5];	% 5组样本
Y = pdist(a);   % 计算两两样本之间的欧式距离
Z = linkage(Y); % 使用最短距离算法生成具有层次结构的聚类树
T = cluster(Z,3);	% 将聚类树分成3类
H = dendrogram(Z,0);	% 将聚类树Z全部画出

得到下聚类图:

matlab聚类算法实现 matlab中聚类函数_数学建模_18

(二)
clc, clear;	% 清除页面和工作区
a = [1,0;1,1;3,2;4,3;2,5];	% 5组样本
Y = pdist(a);   % 计算两两样本之间的欧式距离
Z = linkage(Y); % 使用最短距离算法生成具有层次结构的聚类树
T = cluster(Z,3);	% 将聚类树分成3类
cutoff = median([Z(end-2,3) Z(end-1,3)]);	% 让其最小距离在倒数第二三行中,其取倒数第二行,即分成三类
H = dendrogram(Z,0,'ColorThreshold',cutoff);% 将Z带不同颜色画出

得到下聚类图:


matlab聚类算法实现 matlab中聚类函数_matlab_19

参考资料:
[1] 司守奎, 孙兆亮. 数学建模算法与应用[M].北京:国防工业出版社,2020:2.