我正在尝试计算两个256*256图像标签之间的归一化互信息,将其展平为一个数组。
在sklearn的文档中,很明显,函数normalized_mutual_info_score应该只输出0到1之间的值。
然而,我意识到,当比较包含大量元素的列表时,有时会给出负值或大于1的值。
这是一个溢出/下溢问题吗?(我意识到,如果我将average_method更改为“算术”、“最小”或“最大”,但不确定在我的情况下使用哪一个最合适,我会得到一个更现实的答案。)
使用sklearn 0.20.0,我将提供一个合成示例来重现这个问题:
metrics.normalized_mutual_info_score([0]*100001, [0]*100000 + [1])
metrics.normalized_mutual_info_score([0]*110001, [0]*110000 + [1])我希望下面的答案是7.999,但我得到的结果分别是0和-7.999。
发布于 2019-01-18 17:45:08
正如您所提到的,设置average_method可以提供合理的值。
normalized_mutual_info_score([0]*100001, [0]*100000 + [1],average_method='arithmetic')
#3.166757680223739e-14我建议使用arithmetic,因为它将成为下一个0.22版本reference的默认值。
https://stackoverflow.com/questions/54225078
复制相似问题