我用下面的代码从编程集体智能,这是一个函数,从书中计算出两个影评人之间的距离。在
这个函数对字典中排名的差异求和,但是n维的现实的灯泡距离也包括该和的平方根。在
既然我们用同一个函数来给每个人排序,我们的平方根与否都无关紧要,但我想知道这有什么特别的原因吗?在from math import sqrt
# Returns a distance-based similarity score for person1 and person2
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)