用matlab 做聚类分析 转载一: MATLAB 提供了两种方法进行聚类分析: 1、利用clusterdata 函数对数据样本进行一次聚类,这个方法简洁方便,其特点是使用范围较窄,不能由用户根据自身需要来设定参数,更改距离计算方法; 2、分步聚类:(1)用pdist 函数计算变量之间的距离,找到数据集合中两辆变量之间的相似性和非相似性;(2)用linkage 函数定义变量之间的连接;(3)用cophenetic 函数评价聚类信息;(4)用cluster 函数进行聚类。 下边详细介绍两种方法: 1、一次聚类 Clusterdata 函数可以视为 pdist、linkage 与 cluster 的综合,一般比较简单。 【clusterdata 函数: 调用格式:T=clusterdata(X,cutoff) 等价于 Y=pdist(X,’euclid’); Z=linkage(Y,’single’); T=cluster(Z,cutoff) 】 2、分步聚类 (1)求出变量之间的相似性 用pdist 函数计算出相似矩阵,有多种方法可以求距离,若此前数据还未无量纲化,则可用zscore 函数对其标准化 【pdist 函数:调用格式:Y=pdist(X,’metric’) 说明:X 是 M*N 矩阵,为由 M 个样本组成,每个样本有 N 个字段的数据集 metirc 取值为:’euclidean’:欧氏距离(默认)‘seuclidean’:标准化欧氏距离;‘mahalanobis’:马氏距离… 】 pdist 生成一个M*(M-1)/2 个元素的行向量,分别表示M 个样本两两间的距离。这样可以缩小保存空间,不过,对于读者来说却是不好操作,因此,若想简单直观的表示,可以用squareform 函数将其转化为方阵,其中x(i,j)表示第i 个样本与第j 个样本之的距离,对角线均为0. (2)用linkage 函数来产生聚类树 【linkage 函数:调用格式:Z=linkage(Y,’method’) 说明:Y 为pdist 函数返回的M*(M-1)/2 个元素的行向量, method 可取值:‘single’:最短距离法(默认);’complete’:最长距离法; ‘average’:未加权平均距离法;’weighted’:加权平均法 ‘centroid’: 质心距离法; ‘median’:加权质心距离法; ‘ward’:内平方距离法(最小方差算法)】 返回的Z 为一个(M-1)*3 的矩阵,其中前两列为索引标识,表示哪两个序号的样本可以聚为同一类,第三列为这两个样本之间的距离。另外,除了M 个样本以外,对于每次新产生的类,依次用M+1、M+2、…来标识。 为了表示Z 矩阵,我们可以用更直观的聚类数来展示,方法为:dendrogram(Z), 产生的聚类数是一个n 型树,最下边表示样本,然...