【发布时间】:2017-07-17 20:12:51
【问题描述】:
我有一个以数组形式组织的 3d 散点图。当我将数据绘制为 3d 散点图时,我获得了 2 个清晰的集群 - 左侧一个较小的一个,右侧一个大的。
我已经尝试过 k-means 聚类,但我获得了这 2 个聚类,而不是我想要的两个:
这是我的代码:
opts = statset('Display','final');
[idx,C] = kmeans(data,2,'Distance','cityblock',...'Replicates',5,'Options',opts);
figure;
plot3(data(idx==1,1),data(idx==1,2),data(idx==1,3),'r.','MarkerSize',12)
plot3(data(idx==2,1),data(idx==2,2),data(idx==2,3),'b.','MarkerSize',12)
plot3(C(:,1),C(:,2),C(:,3),'cx',...'MarkerSize',15,'LineWidth',3)
legend('Cluster 1','Cluster 2','Centroids',...'Location','NW')
title 'Cluster Assignments and Centroids'
hold off
如何更改我的代码以便获得 2 个集群(左侧一小块,右侧一大块),而不是我现在拥有的上下集群?非常感谢!
【问题讨论】:
-
在绘制质心时是否有拼写错误,
plot与plot3? -
不,我不这么认为..因为 plot3 用于 3 个参数,但只有 2 个质心参数。
-
那么你应该得到 2 个质心,每个质心都是 3 维的,否则会出现非常错误的情况。
-
是的,如上图所示,我确实得到了 2 个质心。然而,它并没有像我希望的那样聚集,从左到右分裂。相反,它上下分裂。我想知道如何修复我的代码,以便按照我想要的方式对其进行聚类?
-
我理解这个问题。你能说明你的质心的值吗?我问的原因是它们可能根本没有被正确绘制。
标签: matlab plot 3d k-means scatter