算术和几何归一化互信息

arithmetic and geometric normalized mutual information

算术归一化互信息和几何归一化互信息有什么区别, 我有:

    In [4]: real
    Out[4]:
    array([0., 0., 0., 0., 0., 0., 0., 0., 1., 1., 0., 0., 0., 0., 1., 1., 0., 0., 1., 0., 1., 0., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.])

    In [6]: test
    Out[6]:
    array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.])

现在我想计算归一化互信息: 但它表现得有点奇怪

    In [13]: normalized_mutual_info_score(real.astype(int),test.astype(int),average_method='arithmetic')
    Out[13]: 6.422893887289432e-16

    In [14]: normalized_mutual_info_score(real.astype(int),test.astype(int),average_method='geometric')
    Out[14]: 1.0

WHY 中的主要问题?

是关于如何计算公式的分母的。对于归一化互信息和调整互信息,归一化值通常是每个聚类的熵的某个广义平均值。存在各种通用方法,并且不存在优先选择其他方法的固定规则。该决定主要是逐个领域的基础;例如,在社区检测中,算术平均值是最常见的。每种规范化方法都提供“性质相似的行为”。在我们的实现中,这是由 average_method 参数控制的。 这是 scikit 学习信息