我有一个大小的数据集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的集群成员资格的多数投票?
答案 0 :(得分:0)
您需要重新标记群集,例如最大重叠。
有不同的策略。您可以贪婪地尝试匹配最大重叠,或者您可以使用匈牙利算法。但只有3个群集,你可以做一个暴力攻击方法,只测试所有6个可能的排列来匹配最佳匹配。
由于此问题,大多数评估措施会忽略实际标签。他们的工作点是成对的。