聚类分析的MATLAB实现

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

聚类分析

1 预备数据

对以下10个向量进行聚类。

X = [ % X=rand(10,2)*5

4.4988 1.5465

4.1081 4.1925

3.2246 2.8404

4.0899 1.8521

3.3011 3.5137

1.7099

2.7329

1.4486

2.2244

1.7060 3.4728

2.6704

3.1066

3.6356 3.9741]

在聚类前,应标准化数据。设X的每个列向量为V,被标准化为(V-mean(V))./std(V)

X=zscore(X)

绘图

2 计算向量之间的相似性

Y是距离(对称)矩阵的向量表示形式

Y = pdist(X, 'euclidean');

% 还原为对称矩阵,便于调试

H=squareform(Y)

更高级的距离计算方式:带权的欧氏距离

Y = pdist(X, @DISTFUN,[.1 .3 .3 .2 .1]); function d = DISTFUN(XI, XJ, W)

d = sqrt((XI-XJ).^2 * W');

3 聚类树的计算与显示

Z=linkage(Y,'single')

聚类C1和聚类C2的距离的计算方法:

4 聚类结果

对聚类树,按照指定数目确定子集。

T=cluster(Z,2);

1 2 2 1 2 2 2 2 2 2 T=cluster(Z,3);

3 1 1 3 1 2 2 2 1 1 T=cluster(Z,4);

4 3 3 4 3 1 1 2 3 3 4 3 3 4 3 1 1 2 3 3

5 聚类评价

C=cophenet(Z,Y); % 相聚系数

计算方法: ∑∑∑<<<----=j i j i j i j i j i j i j i y Y z Z

y Y z Z C 2,2,,,)(*)())

(*)((

j i Y ,是向量i 与向量j 的距离, y 是距离的均值. j i Z ,是向量i 与向量j 在合并中的距离,z 距离的均值。

一般情形:

Z=linkage(Y,'average'); C=cophenet(Z,Y) % 更合理

相关文档
最新文档