空集之间的 Jaccard 相似度

Jaccard Similarity Between Null Sets

我想根据标准代码列表的 existence/nonexistence 计算两个数据集之间的 Jaccard 相似度。 例如(x,y,z 是数据集): 数据集 x 和 y 没有任何标准代码 (Null),因此我将列表值设置为零。

 x = [0,0,0] 
 y = [0,0,0] 
 z = [0,1,0] 

from sklearn.metrics import jaccard_similarity_score
jaccard_similarity_score(x,y),jaccard_similarity_score(x, z)

x 和 z 之间的 Jaccard sim 为 0.66 (2/3)。是否有处理两个空集之间集交集的相似性度量?在我的例子中,我想将数据集 x 和 y 之间的相似性设置为 0,而不是 1(使用 Jaccard 计算)。

两个空集之间的 Jaccard 相似性没有意义(除以零)。根据问题的不同,重叠相似性(交集的大小)可能是一种选择。或者,您可以通过检查两个空集来包装 Jaccard 相似度函数,在这种情况下为 return 0。

这取决于每种情况,但根据您的情况,我认为您应该将集合 x 和 y 的 Jaccard 相似度设置为 1,因为如您所述:

Dataset x and y does not have any standard codes (Null)

所以有人会说 x 和 y 很相似(它们都没有标准代码)。 在任何情况下你都应该检查分数的分母是否为零并处理它(例如你可以给一个标志值 -1)。