使用 numpy 的相似性度量
Similarity Metric using numpy
我正在尝试根据 jaccard 相似度分数定义我自己的相似度度量。在 jaccard 度量中我唯一想要的额外的东西是是否也考虑标签的频率。为此,我编写了以下代码片段:
u = [12,0,3]
v = [24,6,1]
num = 0
den = 0
for i in range(3):
if u[i]!=0 and v[i] != 0:
num+=(u[i]+v[i])
den+=(u[i]+v[i])
print(1 - num/den)
所以我的问题是
- 这可以通过 numpy 的按位运算符来完成吗?
- 我可以使用任何其他相似性度量吗?我试过余弦相似度。哪个更有帮助?
一种使用 numpy 向量化函数的方法:
arr = np.array([u,v])
s = arr.sum(0)
(s*(arr==0).any(0)).sum()/s.sum()
输出:
0.13043478260869565
我正在尝试根据 jaccard 相似度分数定义我自己的相似度度量。在 jaccard 度量中我唯一想要的额外的东西是是否也考虑标签的频率。为此,我编写了以下代码片段:
u = [12,0,3]
v = [24,6,1]
num = 0
den = 0
for i in range(3):
if u[i]!=0 and v[i] != 0:
num+=(u[i]+v[i])
den+=(u[i]+v[i])
print(1 - num/den)
所以我的问题是
- 这可以通过 numpy 的按位运算符来完成吗?
- 我可以使用任何其他相似性度量吗?我试过余弦相似度。哪个更有帮助?
一种使用 numpy 向量化函数的方法:
arr = np.array([u,v])
s = arr.sum(0)
(s*(arr==0).any(0)).sum()/s.sum()
输出:
0.13043478260869565