def similarity(user_id_a,user_id_b,sim_type=0):
user_a_tuple_list = userdict[user_id_a].get_items()
user_b_tuple_list = userdict[user_id_b].get_items()
common_items=0
sim = 0.0
for t1 in user_a_tuple_list:
for t2 in user_b_tuple_list:
if (t1[0] == t2[0]):
common_items += 1
sim += math.pow(t1[1]-t2[1],2)
if common_items>0:
sim = math.sqrt(sim/common_items)
sim = 1.0 - math.tanh(sim)
if sim_type==1:
max_common = min(len(user_a_tuple_list),len(user_b_tuple_list))
sim = sim * common_items / max_common
print "User Similarity between",names[user_id_a],"and",names[user_id_b],"is", sim
return sim #If no common items, returns zero
#3.1
# load movielens data
评论列表
文章目录