我试图了解sklearn的jaccard_score是怎么回事。
这是我得到的结果
1. jaccard_score([0 1 1], [1 1 1])
0.6666666666666666
2. jaccard_score([1 1 0], [1 0 0])
0.5
3. jaccard_score([1 1 0], [1 0 1])
0.3333333333333333
我知道公式是
intersection / size of A + size of B - intersection
我认为最后一个应该给我0.2,因为重叠是1,条目总数是6,结果是1/5。但我得到了0.33333 ...
谁能解释sklearn如何计算jaccard_score?
答案 0 :(得分:0)
对于每个sklearn's doc,jaccard_score
函数“用于将样本的预测标签集与y_true
中的相应标签集进行比较”。如果属性是二进制的,则使用混淆矩阵基于this进行计算。否则,对每个属性值/类标签使用混淆矩阵进行相同的计算。
上面对二进制属性/类的定义可以简化为集合定义,如下所述。
假定存在三个记录r1
,r2
和r3
。向量[0, 1, 1]
和[1, 1, 1]
是真实的记录类别和预测的记录类别,可以分别映射到两组{r2, r3}
和{r1, r2, r3}
。在此,向量中的每个元素表示对应的记录是否存在于集合中。两组的Jaccard相似度与两个向量的相似度值定义相同。