使用Matlab完成层次聚类算法(最小生成树算法)

最近要写作业,涉及到一些聚类算法。

关于聚类算法的一些理论和定义,请参照博客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);
end
Y=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),'

你可能感兴趣的:(matlab,机器学习)