/

《集体智慧编程》读书笔记 - Chapter2

评价相似度
1.欧几里得距离

1
2
3
4
5
6
7
8
9
10
11
12
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 prefs[person1] if item in prefs[person2]])

return 1/(1+sqrt(sum_of_squares))

2.皮尔逊相关系数:判断两组数据与某一直线拟合程度的一种度量。对应的公示比欧几里得距离评价的计算公式要复杂,但是他在数据不是很规范的时候,会倾向于给出更好的结果。