0

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

    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

为什么?

4

1 回答 1

0

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

于 2019-07-28T12:32:04.777 回答