下面是我用于计算向量之间欧几里得距离的代码,以及我转换后的数据集(向量)的片段。
import itertools
import numpy as np
vect=[[2, 1, 1, 1, 1, 3, 4, 2, 5, 1],
[1, 5, 2, 1, 1, 1, 1, 1, 1, 2],
[2, 1, 1, 1, 2, 1, 1, 1, 1, 1]]
for u1, u2 in itertools.combinations(vect, 2):
x = np.array(u1)
y = np.array(u2)
space = np.linalg.norm(y - x)
print space
向量之间的欧几里得距离为:
7.0
5.56776436283
4.472135955
我的目标是计算向量之间的相似度,并为每次比较输出一个相似度分数。典型的相似度得分介于 0 和 1 之间,0 表示不相似,1 表示完全相似。这里的问题是如何将欧几里得距离转换为相似度分数?有人提出了这个公式:1/1+d(P1, P2) 即欧几里得距离的倒数=相似度得分。有什么建议吗?谢谢