在python中,如果顺序很重要,如何计算多个列表的Jaccard索引

2024-09-21 05:37:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我想计算两个以上列表的Jaccard索引,我在这里找到了一个解决方案:Similarity of list elements 但是它没有考虑元素顺序(索引),这在我的例子中很重要。 我运行以下代码:

 Selected_Features = [
[1, 1, 1, 1, 0, 1],
[1, 1, 0, 1, 0, 1],
[1, 1, 0, 1, 0, 1],
[1, 1, 0, 1, 0, 1],]

from datasketch import MinHash
from datasketch import *
import itertools
minhash_data = list()
for element in Selected_Features:
m = MinHash()
for d in element:
    m.update(str(d).encode("utf-8"))
    minhash_data.append(m)
jaccard_sims = list()
for pair in itertools.combinations(minhash_data, 2):
    jaccard_sims.append(pair[0].jaccard(pair[1]))

average = sum(jaccard_sims) / float(len(jaccard_sims))
print("Average Jaccard similarity: {}".format(average))

以及输出: 平均相似性:1.0 这不是


Tags: infromimportfordatalistfeaturesselected

热门问题