k的多次迭代意味着在python中

时间:2018-03-23 04:07:24

标签: python-3.x cluster-analysis

我有一个大小的数据集X(n_samples,2)。它们与k-means(k = 3)相当一致地形成3个簇,我想运行3次方法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的集群成员资格的多数投票?

1 个答案:

答案 0 :(得分:0)

您需要重新标记群集,例如最大重叠。

有不同的策略。您可以贪婪地尝试匹配最大重叠,或者您可以使用匈牙利算法。但只有3个群集,你可以做一个暴力攻击方法,只测试所有6个可能的排列来匹配最佳匹配。

由于此问题,大多数评估措施会忽略实际标签。他们的工作点是成对的。