【发布时间】:2018-09-01 16:34:44
【问题描述】:
我有一个大小为 (n_samples, 2) 的数据集 X。它们与 k-means (k=3) 相当一致地形成 3 个集群,我想运行 3-means 10,000 次以验证集群模式的一致性。通过这样做,我得到一个数据框,如:
sample_name | iter1 | iter2 | iter3 | ...
------------|-------|-------|-------|
x1 | 1 | 0 | 1 |
x2 | 1 | 0 | 1 |
x3 | 1 | 0 | 2 |
x4 | 0 | 1 | 2 |
x5 | 0 | 1 | 2 |
x6 | 0 | 1 | 2 |
x7 | 2 | 2 | 0 |
x8 | 2 | 2 | 0 |
x9 | 2 | 2 | 0 |
...以此类推,最多 10,000 次迭代(列),其中 '0'、'1' 和 '2' 是 k-means 分配的集群标签。如示例中所示,数据集群非常好,但是为这些集群赋予的(任意)名称在每次运行时都会发生变化。如何将命名标准化为:
sample_name | iter1 | iter2 | iter3 | ...
------------|-------|-------|-------|
x1 | a | a | a |
x2 | a | a | a |
x3 | a | a | b |
x4 | b | b | b |
x5 | b | b | b |
x6 | b | b | b |
x7 | c | c | c |
x8 | c | c | c |
x9 | c | c | c |
这样我最终可以通过向下迭代行来获得每个 x_i 的集群成员的多数票吗?
【问题讨论】:
-
我非常怀疑你能做些什么,集群可能是相同的,但它们可以按任何顺序标记。不,这不是你可以改变的。
-
可能有很多先进的技术(假设一个正式的任务)。为什么不这样做:在每个 kmeans 之后获取质心;订购它们(在您的 2d 的情况下;例如从左下角到右上角):根据此顺序标记。
标签: python-3.x cluster-analysis