说明:如果是要用matlab做kmeans聚类分析,直接使用函数kmeans即可。使用方法:kmeans(输入矩阵,分类个数k)。
转载一:
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函数将其转化为方阵,