gpt4 book ai didi

Matlab:kmeans 聚类给出了意想不到的聚类

转载 作者:行者123 更新时间:2023-12-02 08:25:00 26 4
gpt4 key购买 nike

示例:

load kmeansdata %provides X variable
Y=bsxfun(@minus,X,mean(X,2))'/sqrt(size(X,2)-1); %normalized and means adjusted
[~,~,PC] = svd(Y); %
plot(PC(:,1),PC(:,2),'m.','markersize',15)

绘制前两列,您将得到看起来像 3 个簇的结果。我想使用 kmeans 来识别这些簇,并用不同的颜色绘制簇作为 prood。我尝试过:

[idx,cntrd] = kmeans(PC(:,1:2),3,'Distance','sqEuclidean');%,'Distance','correlation');

cluster=3;
Col = {'.b','.r','.g','.y','.m','.c','.k'}; % Cell array of colours.
figure;
hold on
for clus=1:cluster
plot(PC(idx==clus,1),PC(idx==clus,2),Col{clus},'MarkerSize',12)
end
plot(cntrd(:,1),cntrd(:,2),'kx','MarkerSize',15,'LineWidth',3) %plotting the centroids of the clusters

簇质心已关闭,颜色也不是我所期望的。有人可以帮忙吗?

编辑:有点回答:

我从 mathworks 网站复制了此代码并替换了我的 kmeans 行:

opts = statset('Display','final');
[idx,C] = kmeans(PC(:,1:2),3,'Distance','cityblock',...
'Replicates',5,'Options',opts);

它似乎有效,但我不太明白 opts 的作用。我认为,复制只是重复 kmeans 5 次,并为质心选择某种平均值。我还重新启动了 matlab,以防出现某种故障

编辑:忽略上面:

我认为问题已解决,因此我尝试寻找合适的 k 值。我输入 k=1,运行所有内容,然后 k=2,然后 k=3,我发现我又犯了同样的错误

最佳答案

kmeans 可能对初始质心位置敏感。问题似乎在于用于选择起点的算法。例如,您可以通过运行以下命令获得预期的答案:

[idx,cntrd] = kmeans(PC(:,1:2),3, 'start', [-0.05 0; 0 0; 0.05  0]);

外表也可能具有欺骗性。在这种情况下,数据的离散度在 x 和 y 维度上不相等。因此,对于某些点对,视觉簇之间的欧几里德距离不像簇内的那么远。

您可以考虑对此数据使用混合高斯分布模型。

关于Matlab:kmeans 聚类给出了意想不到的聚类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30024653/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com