只是需要用到matlab画图,在网上随便找了找 改了改
matlab内部直接就有k-means的
X=[39.55 116.24;41.48 123.25;38.55 121.36;43.54 125.19;45.44 126.36;37.54 112.33;40.06 113.17;38.02 114.3;34.46 113.4;31.52 117.17;28.12 112.59;28.4 115.55;27.33 109.58;30.4 104.04;29.35 105.53;26.35 106.42;33.04 107.01;25.17 110.17;22.48 108.19;23.08 113.14;22.33 114.07;22.17 113.36;30.46 120.45;34.17 108.57;23.03 118.46;31.39 120.43;41.43 125.56;31.14 121.29;31.19 120.37;30.16 120.1;30.26 120.18;29.52 121.33;36.38 101.48;38.27 106.16;36.4 117;37.26 116.17;36.03 120.18;37.48 120.45;35.23 119.32;36.04 103.51;40.59 117.57;36.06 114.21;39.36 118.11;47.2 123.57;30.2 115;30.35 114.17;31.47 119.58;34.36 119.1;41.18 123.46;39.02 117.12]
opts = statset('Display','final');
[idx,ctrs] = kmeans(X,4,...
'Distance','city',...
'Replicates',5);
plot(X(idx==1,1),X(idx==1,2),'r.','MarkerSize',12)
hold on
plot(X(idx==2,1),X(idx==2,2),'m.','MarkerSize',12)
plot(X(idx==3,1),X(idx==3,2),'c.','MarkerSize',12)
plot(X(idx==4,1),X(idx==4,2),'g.','MarkerSize',12)
plot(X(idx==5,1),X(idx==5,2),'y.','MarkerSize',12)
plot(ctrs(:,1),ctrs(:,2),'ko',...
'MarkerSize',4,'LineWidth',1.5)
legend('Cluster 1','Cluster 2','Cluster 3','Cluster 4','Cluster 5','Centroids',...
'Location','NW')