我想计算两个以上列表的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 这不是
给定两组整数s1、s2和s3,现在用于查找jaccard索引
intersect = s1 & s2 & s3 &... size = len(intersect) index = size/(len(s1)+ len(s2) +len(s3 - size)
相关问题 更多 >
编程相关推荐