今天发现一个很奇怪的东西,就是我使用sklearn库进行计算normalized_mutual_info_score时,发现有两种语法
from sklearn.metrics.cluster import normalized_mutual_info_score
print(normalized_mutual_info_score([0, 0, 1, 1], [0, 0, 1, 1]))
print(normalized_mutual_info_score([0, 0, 1, 1], [1, 1, 0, 0]))
print(normalized_mutual_info_score([0, 0, 0, 0], [0, 1, 2, 3]))
结果如下
第二种方式
from sklearn.metrics import normalized_mutual_info_score
print(normalized_mutual_info_score([0, 0, 1, 1], [0, 0, 1, 1]))
print(normalized_mutual_info_score([0, 0, 1, 1], [1, 1, 0, 0]))
print(normalized_mutual_info_score([0, 0, 0, 0], [0, 1, 2, 3]))
两种方法的结果是一致的,但是存在两种导入的方式
然后我发现一个很神奇的bug
可以看到normalized_mutual_info_score
返回的值是有item()
但是如果计算adjusted_rand_score时,这个返回结果是没有item()属性的
这个问题在于这两个结果的类型不一样
这个类型是因为两个类型,一个python内置的float类型,一个是numpy.float类型,这个是可以转换的