Matlab 提供系列函数用于聚类分析,归纳起来具体方法有如下:
方法一:直接聚类,利用 clus te rdata 函数对样本数据进行一次聚类,其缺点为可供用户选择的面较窄,不能更改距离的计算方法,该方法的使用者无需了解聚类的原理和过程,但是聚类效果受限制。
方法二:层次聚类,该方法较为灵活,需要进行细节了解聚类原理,具体需要进行如下过程处理:( 1 )找到数据集合中变量两两之间的相似性和非相似性,用 pdist 函数计算变量之间的距离;( 2 )用 linkage 函数定义变量之间的连接;( 3 )用 cophene TI c 函数评价聚类信息;( 4 )用 cluster 函数创建聚类。
方法三:划分聚类,包括K均值聚类和K中心聚类,同样需要系列步骤完成该过程,要求使用者对聚类原理和过程有较清晰的认识。
接下来,介绍Matlab中的相关函数和相关聚类方法。
1 . Matlab 中相关函数介绍
1.1 pdist 函数
调用格式: Y=pdist(X,& rs quo;metric& rs quo;)
说明:用 ‘metric’ 指定的方法计算 X 数据矩阵中对象之间的距离。 ’
X :一个 m & TI mes; n 的矩阵,它是由 m 个对象组成的数据集,每个对象的大小为 n 。
metric’ 取值如下:
‘euclidean’ :欧氏距离(默认); ‘seuclidean’ :标准化欧氏距离;
‘mahalanobis’ :马氏距离; ‘cityblock’ :布洛克距离;
‘minkowski’ :明可夫斯基距离; ‘cosine’ :
‘correla TI on’ : ‘hamming’ :
‘jaccard’ : ‘chebychev’ : Chebychev 距离。
1.2 squareform 函数
调用格式: Z=squareform(Y,..)
说明: 强制将距离矩阵从上三角形式转化为方阵形式,或从方阵形式转化为上三角形式。
1.3 linkage 函数
调用格式: Z=linkage(Y,’method’)
说 明:用‘ method ’参数指定的算法计算系统聚类树。
Y : pdist 函数返回的距离向量;
method :可取值如下:
‘single’ :最短距离法(默认); ‘complete’ :最长距离法;
‘ average ’:未加权平均距离法; ‘ weighted ’: 加权平均法;
‘centroid’ :质心距离法; ‘median’ :加权质心距离法;
‘ward’ :内平方距离法(最小方差算法)
返回: Z 为一个包含聚类树信息的( m-1 )& TI mes; 3 的矩阵。
1.4 dendrogram 函数
调用格式: [H , T , …]=dendrogram(Z,p , …)
说明:生成只有顶部 p 个节点的冰柱图(谱系图)。
1.5 cophenet 函数
调用格式: c=cophenetic(Z,Y)
说明:利用 pdist 函数生成的 Y 和 linkage 函数生成的 Z 计算 cophenet 相关系数。
1.6 cluster 函数
调用格式: T=cluster(Z,…)
说明:根据 linkage 函数的输出 Z 创建分类。
1.7 clusterdata 函数
调用格式: T=clusterdata(X,…)
说明:根据数据创建分类。
T=clusterdata(X,cutoff) 与下面的一组命令等价:
Y=pdist(X,’euclid’);
Z=linkage(Y,’single’);
T=cluster(Z,cutoff);
2. Matlab聚类 程序的设计
2.1 方法一: 一次聚类法
X=[11978 12.5 93.5 31908;…;57500 67.6 238.0 15900];
T=clusterdata(X,0.9)
2.2 方法二和方法三设计流程: 分步聚类
Step1 寻找变量之间的相似性
用 pdist 函数计算相似矩阵,有多种方法可以计算距离,进行计算之前最好先将数据用 zscore 函数进行标准化。
X2=zscore(X); % 标准化数据
Y2=pdist(X2); % 计算距离
Step2 定义变量之间的连接
Z2=linkage(Y2);
Step3 评价聚类信息
C2=cophenet(Z2,Y2); //0.94698
Step4 创建聚类,并作出谱系图