我想基于标准代码列表的存在/不存在来计算两个数据集之间的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计算)。
答案 0 :(得分:1)
这取决于每种情况,但根据你的情况,我认为你应该将集合x和y的Jaccard相似性设置为1,因为正如你所说:
数据集x 和 y没有任何标准代码(空)
所以有人可以争辩说x和y非常相似(它们都没有标准代码)。 在任何情况下,你应该检查分数的分母是否为零并处理它(例如,你可以给一个标志值-1)。
答案 1 :(得分:0)
两个空集之间的Jaccard相似性没有意义(除以零)。根据问题,重叠相似度(交叉点大小)可能是一个选项。或者,您可以将Jaccard相似性函数包装为两个空集,并在这种情况下返回0。