聚类分析的MATLAB实现

2019-08-29 20:00

聚类分析

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)

绘图 figure plot(X(:,1),X(:,2),'*') for i=1:10 text(X(i,1),X(i,2), num2str(i),'FontSize',15); end

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的距离的计算方法: 'single' 点间的最短距离 'complete' 点间的最远距离 'average' 点间的平均距离 点/聚类编号 点/聚类编号 距离 新聚类编号、组成 2 10 0.4935 11[2 10] 1 4 0.5068 12[1 4] 3 9 0.5846 13[3 9] 11 5 0.6041 14[2 10 5] 6 7 0.6242 15[6 7] 14 13 0.7336 16[2 10 5] [3 9] 15 8 0.8408 17[6 7 8] 16 17 0.9649 18[2 10 5][3 9][6 7 8] 12 18 1.3680 19[1 4] [2 10 5][3 9][6 7 8] dendrogram(Z); %绘制聚类树

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); % 相聚系数 计算方法: C??((Zi?ji,j?z)*(Yi,j?y))22?(Zi?ji,j?z)*?(Yi,j?y)i?j

Yi,j是向量i与向量j的距离, y是距离的均值.

Zi,j是向量i与向量j在合并中的距离,z距离的均值。

一般情形:

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


聚类分析的MATLAB实现.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:西南大学植物学作业答案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: