Python 根据标准化的相互信息得分获得标签的最佳映射

Python 根据标准化的相互信息得分获得标签的最佳映射,python,scikit-learn,cluster-analysis,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] 这里A和B彼此100%一致,因为可以在标签之间创建1-1映射A.k.A.置换,将A转换为B,反之亦然。这样的映射可能看起来像{1:3,2:1,3:2} C也有一些一致性,因为A和B都可以使用{1:1,2:1,3:2

我有许多不同的集群过程,每个过程都将一个集合分割成若干个带标签的分区

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]
这里A和B彼此100%一致,因为可以在标签之间创建1-1映射A.k.A.置换,将A转换为B,反之亦然。这样的映射可能看起来像{1:3,2:1,3:2}

C也有一些一致性,因为A和B都可以使用{1:1,2:1,3:2}将A->C映射,或者使用{3:1,1:1,2:2}将B->C映射。或者,也可以从A->B->C链接映射

因此,每一个标签方案都会对集合进行划分,在某些情况下,100%的人彼此同意,只是没有就共同的标签方案达成一致

D是一种稍有不同的情况,因为D包含更多的分区,所以不可能映射到它,但如果需要,可以从D映射到a或C

可以使用sklearn的标准化相互信息评分来衡量分区之间的相似性,但我想做的是确定可以执行的最佳标签映射,以标准化标签方案。其中“best”是所有分区共享一组公共标签所需的映射

在分区将集合划分为固定的k个组的情况下,我发现了一种方法,其工作原理是将分区用作特征集,并对该特征集进行k-均值聚类,但当给定聚类中的分区数不同时,这种方法不起作用


由于标准化的相互信息分数能够看穿标签的差异,是否有办法识别执行相同任务的映射,标准化不同的标签,以便对其进行更仔细的分析?

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

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