normalized_mutual_info_score sklearn 中给出负值或大于 1 的值



我正在尝试计算两个 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])

我希望下面的答案是 0,但我分别得到了 7.999 和 -7.999。

正如您提到的,设置average_method会给出合理的值。

normalized_mutual_info_score([0]*100001, [0]*100000 + [1],average_method='arithmetic')
#3.166757680223739e-14

我建议使用 arithmetic,因为它将成为下一个版本 0.22 中的默认值,参考。

相关内容

  • 没有找到相关文章

最新更新