使用Matlab完成层次聚类算法(最小生成树算法)
来源:互联网 发布:中国期刊 数据库 编辑:程序博客网 时间:2024/06/07 07:09
最近要写作业,涉及到一些聚类算法。
关于聚类算法的一些理论和定义,请参照博客http://blog.sina.com.cn/s/blog_62f3c4ef01014uhe.html 和大传送术http://blog.csdn.net/a1b2c3d4123456/article/details/45966429 这两篇文章。
Matlab具体实现如下:
filename = 'C:\Users\zyfls\Desktop\ML\第七章聚类\chap_7_数据集.xlsx';A = xlsread(filename);for i=1:500 data(i,1)=A(i,1); data(i,2)=A(i,2);endY=pdist(data,'euclidean');%计算欧式距离Y=squareform(Y);%转换成方阵Z=linkage(Y,'average');%参数为平均距离figure(1);dendrogram(Z,0);%可视化聚类树T=cluster(Z,3);%剪枝为三类figure(2);for i=1:500 data(i,3)=T(i); if T(i)==1 plot(data(i,1),data(i,2),'r.'); else if T(i)==2 plot(data(i,1),data(i,2),'g.'); else T(i)==3 plot(data(i,1),data(i,2),'b.'); end end hold on;end
xlsx文件是500个点的点坐标。
此代码使用average参数完成聚类,聚类效果如下:源码中参数注释如下% 'single' --- nearest distance (default)% 'complete' --- furthest distance% 'average' --- unweighted average distance (UPGMA) (also known as% group average)% 'weighted' --- weighted average distance (WPGMA)% 'centroid' --- unweighted center of mass distance (UPGMC)% 'median' --- weighted center of mass distance (WPGMC)% 'ward' --- inner squared distance (min variance algorithm)‘single’:最短距离法(默认);
‘complete’:最长距离法; ‘average’:未加权平均距离法;
‘weighted’: 加权平均法; ‘centroid’:质心距离法;
‘median’:加权质心距离法;
‘ward’:内平方距离法(最小方差算法)
聚类树效果如下:
另附single(最短距离)聚类参数效果如下:
weighted(加权距离)聚类参数效果如下:
其中方阵Y是得到任意两点之间的欧式距离:
接下来Z=linkage(Y,'average');生成聚类树,简单说就是先找距离最近的两点,将其归为一类,接下来将这两个点看作一个点继续与其它点比较,从中再找最近的两点,最后归为一类。
总结,通过得到的聚类树可以知道,最终会生成一个根节点,也就是聚类成为了一类,但是大多数情况下,我们会将其划分为多类。对于这个例子来说,是分为三类。
所以要对聚类树进行剪枝(我也不知道这是不是叫剪枝,觉得这个操作非常符合剪枝这个动作)。
代码中T=cluster(Z,3)完成了将Z的聚类结果分为了三类。具体理论上怎么实现的,不太清楚,先挖个坑...
阅读全文
0 0
- 使用Matlab完成层次聚类算法(最小生成树算法)
- Matlab实现Kruskal最小生成树算法
- 层次聚类算法伪码和matlab算法
- 贪心算法完成最小生成树kruskal之畅通工程
- 最小生成树算法
- 最小生成树算法
- 最小生成树算法
- 最小生成树算法
- 最小生成树算法
- 最小生成树算法
- 最小生成树算法
- 最小生成树算法
- 最小生成树算法
- 最小生成树算法
- 最小生成树算法
- 最小生成树算法
- 最小生成树算法
- 最小生成树算法
- Angular 4.3 HttpClient (Angular访问 REST Web 服务) 一、Http 请求示例(Get)
- 数据结构实验之查找二:平衡二叉树
- 底部导航栏中间突出范例
- 在未来,你吃的肉不会来自活的有机体
- 面试感悟
- 使用Matlab完成层次聚类算法(最小生成树算法)
- html5的data-*数据绑定小例子
- 删除githhub本地仓库
- Java SE练习
- Oracle数据库常用命令
- Notepad++内置变量
- with as SQL语句
- vs无法引用项目问题
- Python即将纳入高考,AI大潮来袭过后,便是万物互联?