用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