载入标准fisher数据集,然后用k均值聚类算法将数据集分成3簇,关键点是利用索引idx查找矩阵x中对应的值,以及plot各项属性的使用
clear,clc
load fisheriris
x=meas(:,[1:3]);
[idx,cen]=kmeans(x,3);
% silhouette(x,idx)
color=['r','g','b'];
for i=1:3
% kk=x(find(idx==i));
plot3(x(idx==i,1),x(idx==i,2),x(idx==i,3),'markerfacecolor',color(i),'linestyle','none','marker','x')
hold on
end
hold off
更新:之前代码可能有错误,以下时最终代码
clear,clc
load fisheriris
x=meas(:,[1:3]);
[idx,cen]=kmeans(x,3,'replicate',10,'display','final');
silhouette(x,idx)
color=['r','g','b'];
figure,
for i=1:3
plot3(x(idx==i,1),x(idx==i,2),x(idx==i,3),'color',color(i),'linestyle','none','marker','x')
hold on
end
a=cen(:,1);
b=cen(:,2);
c=cen(:,3);
plot3(a,b,c,'markerfacecolor','k','linestyle','none','marker','o')
hold off
grid on