以下是我用于计算向量之间欧几里得距离的代码,以及我的转换后数据集(向量)的一部分示例。
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),即欧几里得距离的倒数=相似度分数。您有什么建议吗?谢谢。
(-1, -1)
是否比(1000, 0)
更类似于(5, 2)
而不是(1007, 0)
?如果是这样,距离信息就不足够了。此外,这也取决于你将用这些信息做什么以及你的规模要求是什么。 - user2357112