我正在尝试计算两个256 * 256图像标签之间的标准化互信息,这些标签被展平为一个数组。
在sklearn的文档中,很明显,函数normalized_mutual_info_score只能输出0到1之间的值。
但是我意识到,当比较具有很多元素的列表时,有时会给我负值或大于1的值。
这是一个上溢/下溢问题吗? (我意识到,如果将average_method更改为“ arithmetic”,“ 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。
答案 0 :(得分:1)
正如您提到的,设置average_method会给出合理的值。
normalized_mutual_info_score([0]*100001, [0]*100000 + [1],average_method='arithmetic')
#3.166757680223739e-14
我建议使用arithmetic
,因为它将成为下一版本0.22 reference中的默认值。