Matlab提供了两种方法进行聚类分析

来源:互联网 发布:alpine mysql 编辑:程序博客网 时间:2024/06/07 07:22

  
一种是利用 clusterdata函数对样本数据进行一次聚类,其缺点为可供用户选择的面较窄,不能更改距离的计算方法;另一种是分步聚类:(1)找到数据集合中变量两两之间的相似性和非相似性,用pdist函数计算变量之间的距离;(2)用 linkage函数定义变量之间的连接;(3)用 cophenetic函数评价聚类信息;(4)用cluster函数创建聚类。

 

1.Matlab中相关函数介绍


1.1  pdist函数

调用格式:Y=pdist(X,’metric’)

说明:用 ‘metric’指定的方法计算 X 数据矩阵中对象之间的距离。’

X:一个m×n的矩阵,它是由m个对象组成的数据集,每个对象的大小为n。

metric’取值如下:

‘euclidean’:欧氏距离(默认);‘seuclidean’:标准化欧氏距离;

‘mahalanobis’:马氏距离;‘cityblock’:布洛克距离;

‘minkowski’:明可夫斯基距离;‘cosine’:

‘correlation’:                ‘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)×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 创建聚类,并作出谱系图

     T=cluster(Z2,6);

     H=dendrogram(Z2);

分类结果:{加拿大},{中国,美国,澳大利亚},{日本,印尼},{巴西},{前苏联}

剩余的为一类。