sklearn jaccard_score如何计算?

时间:2019-06-14 17:41:31

标签: python scikit-learn similarity information-theory

我试图了解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?

1 个答案:

答案 0 :(得分:0)

对于每个sklearn's docjaccard_score函数“用于将样本的预测标签集与y_true中的相应标签集进行比较”。如果属性是二进制的,则使用混淆矩阵基于this进行计算。否则,对每个属性值/类标签使用混淆矩阵进行相同的计算。

上面对二进制属性/类的定义可以简化为集合定义,如下所述。

假定存在三个记录r1r2r3。向量[0, 1, 1][1, 1, 1]是真实的记录类别和预测的记录类别,可以分别映射到两组{r2, r3}{r1, r2, r3}。在此,向量中的每个元素表示对应的记录是否存在于集合中。两组的Jaccard相似度与两个向量的相似度值定义相同。