欧几里得距离计算相似度

比如 A 和 B 两个用户,他们都对《葫芦娃》和《奥特曼》投过票:

葫芦娃 奥特曼 A 2.5 3.0

B 3.0 1.0

可以用欧几里得距离来计算 A 和 B 偏好的相近度。把“葫芦娃”和“奥特曼”分别对应到二维坐标的 X、Y 轴,A 和 B 的评分分别对应到轴上的点。

from math import sqrt
print(1 / (1+sqrt(pow(2.5-3.0,2)+pow(3.0-1.0,2))))

得到的结果:

0.32663163471

公式中,用 1 去除以欧几里得距离公式是为了让产生的结果在 0~1 的区间内,如果结果为 1,那么 A 和 B 偏好相同。再加一个 1,是防止分母为 0。