【问题标题】:MATLAB - label K-means cluster plotMATLAB - 标签 K 均值聚类图
【发布时间】:2023-03-29 01:45:01
【问题描述】:

我有一些数据

data = 16.9;23.8;11.3;5.8;9;2;8.6;7.3;2.6;0.3;0.9;2.7;1;8.7;4.5;0.4;2.8;8.9;0.4;5;2.7;8.4;3.9;8.8

我使用此代码进行了 K-means 聚类:

[idx2,C2] = kmeans(firstblik,2,'Distance','cityblock','Replicates',10);
figure;
plot(firstblik(idx2==1),'r.','MarkerSize',12)
hold on
plot(firstblik(idx2==2),'b.','MarkerSize',12)
legend('Cluster 1','Cluster 2','Location','NW')
hold off

idx2 自动将我的数据分为 2 组(1 和 2),如下所示:

idx2 = [2;2;2;2;2;2;2;2;1;1;1;1;1;2;1;2;1;1;1;1;1;2;1;2]

我为每个数据点制作了一个标签向量,我想在我的绘图上显示它们。

我尝试使用通常的 text() 函数进行标记,但我的 k-means 图被分成 2 部分:

我首先在同一个图中绘制所有 1,然后绘制所有 2

考虑到标签与我的数据矩阵的顺序相同,我如何标记这些点?

感谢任何帮助

谢谢!

附加信息:我的绘图被分成 2 部分,所以我已经提到 text() 函数将不起作用,因为在绘制 idx2 时数据的顺序没有保留

【问题讨论】:

  • 我个人更喜欢给点着色而不是标记它们。
  • 您好,感谢您的帮助。它们已经着色,但我需要单独识别每个点。我不认为这是重复的,因为我已经提到我尝试了 text() 函数。我的问题是数据被分成 2 部分,所以顺序没有保留
  • 好吧,你应该指定你想用什么数据来标记这些点。如果它与idx2 是完全相同的。您应该指定您尝试过的 text 命令究竟是什么,它返回了什么但您期望什么,因为我确信它可以使用 text 完成。

标签: matlab plot label k-means


【解决方案1】:
[cluster_idx, cluster_center] = kmeans(ab,nColors,'distance','sqEuclidean', ...
                                      'Replicates',3);

pixel_labels = reshape(cluster_idx,nrows,ncols);

imshow(pixel_labels,[]);

【讨论】:

  • 一般来说,如果答案包含对代码的用途的解释,以及为什么在不介绍其他人的情况下解决问题的原因,答案会更有帮助。
猜你喜欢
  • 1970-01-01
  • 2014-07-24
  • 2015-02-09
  • 2017-12-30
  • 2012-07-28
  • 2017-01-15
  • 2016-05-20
  • 2012-06-18
  • 2020-12-18
相关资源
最近更新 更多