算术和几何归一化互信息
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 学习信息
算术归一化互信息和几何归一化互信息有什么区别, 我有:
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 学习信息