-
欧几里德距离评价
欧氏距离:(∑(Xi-Yi)2)1/2,即两项间的差是每个变量值差的平方和再平方根。
Python方法: pow(n,2) 对某数求平方,sqrt 求平方根可对函数+1,避免被0 整除的错误,返回1 则两人有一样的偏好。
from math import sqrt
sqrt(pow(4.5-4),2+pow(1-2,2))
1/(1+sqrt(pow(4.5-4),2+pow(1-2,2)))
对方法进行封装
def sim_distance(prefs,person1,person2):
# Get the list of shared_items
si={}
for item in prefs[person1]:
if item in prefs[person2]: si[item]=1
# if they have no ratings in common, return 0
if len(si)==0: return 0
# Add up the squares of all the differences
sum_of_squares=sum([pow(prefs[person1][item]-prefs[person2][item],2)
for item in prefs[person1] if item in prefs[person2]])
return 1/(1+sum_of_squares)