根据normalized_mutual_info_score

时间:2018-06-15 14:02:16

标签: python scikit-learn cluster-analysis

我有许多不同的聚类过程,每个过程都将一个集合分成多个带标签的分区。

e.g。给定{1,2,3,4,5,6}集合,我可能会收集如下的标记:

A = [1,1,2,2,3,3] 
B = [3,3,1,1,2,2]
C = [1,1,1,1,2,2]
D = [1,2,3,3,4,4]

此处AB彼此100%同意,因为可以在标签之间创建1-1映射(a.k.a.置换),将A转换为B,反之亦然。这样的映射可能看起来像{1:3, 2:1, 3:2}

C也有一些协议,因为AB可以使用C {1:1, 2:1, 3:2}将{1}}映射到A->C映射,或{3:1, 1:1, 2:2}映射的B->C。或者,也可以从A->B->C链接映射。

因此,每个标签方案对该集合进行划分,并且在某些情况下100%彼此同意,但不同意共同的标签方案。

D是一个稍微不同的情况,因为D包含更多数量的分区,所以无法映射到它(但如果需要,可以从D向下映射到A或C)

可以使用像sklearn的normalized_mutual_info_score之类的东西来衡量分区之间的相似性,但我想要做的是确定可以执行以标准化标签方案的最佳标签映射。 “最佳”是所有分区共享一组公共标签所需的映射。

如果分区将集合划分为固定的“k”组,我发现一种方法可以使用分区作为特征集和k-means聚类在这组特征上 - 但是当给定群集中的分区数不同时,这不起作用。

由于normalized_mutual_info_score能够“透视”标签的差异,有没有办法确定执行相同任务的映射,标准化不同的labellings以便更密切地分析它们?

1 个答案:

答案 0 :(得分:1)

匈牙利算法是找到最佳映射的首选方法。

它解决了运输问题。每个集群都是供应商,每个标签都是消费者。当将每个供应商与一个消费者匹配时,它可以最大化流量。