我正在尝试使用kmeans聚类来检测由bernoulli过程生成的二维网格中的雷区和自由区。。。但是,质心分配不正确。
请帮忙吗?
rng default; % For reproducibility
p_b=0.5;
p_a=0.1;
B=binornd(1,p_b*ones([50 50])); % mine area
A=binornd(1,p_a*ones([50 150])); % mine free area/"
M=binornd(1,p_a*ones([150 200])); % mine free area
X = [B A ; M];
opts=statset('Display','final');
[idx,C]=kmeans(X,2,'Distance','cityblock','Replicates',5,'Options',opts);
plot(X(idx==1,1),X(idx==1,2),'r.','MarkerSize',12);
hold on;
plot(X(idx==2,1),X(idx==2,2),'b.','MarkerSize',12);
plot(C(:,1),C(:,2),'Kx','MarkerSize',15,'LineWidth',3);
legend('Cluster 1','Cluster 2','Centroids', 'Location','NW');
title('Cluster Assignments and centroids');
hold off;