欧几里德距离
将评价对象的评分放入坐标,如果距离最短,则爱好,特征相近。
公式为:所有距离的差值,先求平方和,然后取平方根。
python 的实现方法:
sum_of_squares=sum([pow(prefs[person1][item]-prefs[person2][item],2) for item in prefs[person1] if item in prefs[person2]])
皮尔逊相关度
如果不同人的评分或者评价标准不同,可以将评价放入散列图,通过相似度来评价。
虚线为最佳拟合线。
相关度值为 0:1,值越大表示越相近。
公式为:
python 的实现方法:
count = len(common)
if count == 0:
return 0
#sum
p1_sum = sum(prefs[person1][item] for item in common)
p2_sum = sum(prefs[person2][item] for item in common)
#square sum
p1_sqsum = sum(pow(prefs[person1][item], 2) for item in common)
p2_sqsum = sum(pow(prefs[person2][item], 2) for item in common)
#plus sum
p_plus_sum = sum(prefs[person1][item] * prefs[person2][item] for item in common)
num = p_plus_sum - (p1_sum * p2_sum) / count
den = sqrt( (p1_sqsum - pow(p1_sum, 2) / count) * (p2_sqsum - pow(p2_sum, 2) / count) )
r = num / den
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于