【发布时间】:2018-12-26 11:12:22
【问题描述】:
假设我有矩阵 A 并且我在 MATLAB 中对它们执行 K-means 聚类。我得到以下
A=
1 20 5
1 30 10
2 60 20
5 100 45
kmeans(A,4) 产生以下标签:
2
4
3
1
现在我置换A 的行,得到矩阵B:
B =
2 60 20
1 30 10
5 100 45
1 20 5
在应用kmeans 之后,标签是B1 = [3 1 2 4],这似乎是随机分配。例如矩阵A 的第二行在4 簇中,但矩阵B 的第二行与A 的第二行相同,在1 簇中。
如何获取kmeans 中的标签,以便具有最高值的行始终获得相同的标签,例如3,而具有最低值的行始终获得1?
例如A的最后一行得到标签3,那么B的第三行也得到标签3。
【问题讨论】:
-
那么你想根据它们的范数对k个均值向量进行排序吗?如果两个向量具有相同的范数怎么办?尺寸 >= 2 没有唯一的顺序。
-
在这种情况下,标签没有任何意义。如果矩阵 A 的第二行在集群 2 中,并且矩阵 C 的第三行也有类似的行为,我想要这样的东西也应该集群在 2 中。
-
你要求 4 个集群,你得到 4 个集群。 K-means 不会猜测有多少集群是有意义的。
-
R 中的这些答案或类似内容怎么样:这背后的方法是什么:stackoverflow.com/questions/48182601/…
-
那是一维数据。您可以在 3D 中强加某种排序(如您的示例中所示),但它是有用的排序吗?例如字典顺序,或基于规范但基于字典顺序去歧义。您需要在问题的上下文中定义“更高”和“更低”。
标签: matlab label cluster-analysis k-means