gpt4 book ai didi

Jaccard 的 Python 包函数集合之间的相似性?

转载 作者:行者123 更新时间:2023-11-28 22:21:30 27 4
gpt4 key购买 nike

是否可以使用 scikit-learn(或另一个著名的 python 包)来获取一对集合之间的 Jaccard 相似度?

我只看到 sklearn jaccard_similarity_score function处理等长的向量/数组/张量,而我确实需要 intersection-over-union计算,这是一个集合计算,而不是对两个相同大小的张量的计算。

也许我应该使用 the multi-label-binarizer, exemplified here ,如果这是 scikit api 提供的预期方式。

当然,自己实现无包的几行代码...

enter image description here*这个问题不是作业,我曾经为非技术观众制作的幻灯片,它说明了这一点。

只是想知道。

最佳答案

Numpy 有一些 Set Routines内置。在这种情况下,正如@Harpal 指出的那样,您可以使用相交和并集操作。

在纯 Python 中使用 intersectionunion :

gold = ['A', 'B', 'C']
clf = ['A', 'D']
gold_s = set(gold)
clf_s = set(clf)
jac_sim = len(gold_s.intersection(clf_s)) / len(gold_s.union(clf_s))
jac_sim
0.25

在 NumPy 中使用 intersect1dunion1d :

gold = np.array(gold)
clf = np.array(clf)
jac_sim = np.intersect1d(gold, clf).size / np.union1d(gold, clf).size
jac_sim
0.25

诚然,NumPy 实现有点慢,但如果您的数据已经在 NumPy 数组中,它可能比将其转换为集合并在 Python 中进行计算更快。这完全取决于您的数据大小。

关于Jaccard 的 Python 包函数集合之间的相似性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48323926/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com