【问题标题】:normalized_mutual_info_score in sklearn giving negative values or values greater than 1sklearn 中的 normalized_mutual_info_score 给出负值或大于 1 的值
【发布时间】:2019-01-16 20:44:12
【问题描述】:

我正在尝试计算两个 256*256 图像标签之间的归一化互信息,展平成一个数组。

在 sklearn 的文档中,很明显函数 normalized_mutual_info_score 应该只输出 0 到 1 之间的值。

但是我意识到,当比较包含大量元素的列表时,有时它会给我负值或大于 1 的值。

这是一个上溢/下溢问题吗? (我意识到如果我将 average_method 更改为“算术”、“min”或“max”,但不确定哪一个最适合我的情况。)

使用 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。

【问题讨论】:

  • 当我使用“几何”而不是“算术”时,我仍然得到负值或大于 1 的值。有人知道为什么吗?

标签: python scikit-learn


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2019-10-09
    • 1970-01-01
    • 2020-10-08
    • 2012-02-23
    • 2018-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-16
    相关资源
    最近更新 更多