您的位置:首页 > 其它

推荐系统:寻找相近用户——欧几里德距离评价

2013-12-18 21:11 357 查看
所谓欧几里德距离,通俗的来讲就是两个物体之间各个维度的差的平方和,然后再开方。这样,我们可以通过两个用户对若干本书的评价分数,我们可以求得两个用户的相近程度。具体算法思路是,先求得两个用户都评价的书籍,然后求同一本书的评分差的平方,并把各差的平方相加,其实可以同时完成,即在求共同评价的书籍的时候就可以求差的平方和。为了比较容易衡量,也是为了和其他评价标准相同,我们规定0代表两用户无共同爱好,1代表完全相同。实现详见代码

from math import sqrt
def sim_distance(prefs,person1,person2):
si={}
for item in prefs[person1]:
if item in prefs[person2]:
si[item]=1;

if len(si)==0:
return 0

sum_of_squares=sum([pow(prefs[person1][item]-prefs[person2][item],2)
for item in si])

#print 1/(1+sqrt(sum_of_squares))
return 1/(1+sqrt(sum_of_squares))

参考文献:Programming Collective Intelligence by Toby Segaran. Copyright 2007 Toby Segaran,978-0-596-52932-1
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息