#coding=utf-8
from math import sqrt
##--------------以下使用欧几里得计算用户之间的相似度--------------------##
def sim_distance(prefer, person1, person2):
sim = {}
for item in prefer[person1]:
if item in prefer[person2]:
sim[item] = 1 #添加共同项到字典中
#无共同项,返回0
if len(sim)==0:
return 0
#计算所有共有项目的差值的平方和
sum_all = sum([pow(prefer[person1][item]-prefer[person2][item], 2) for item in sim])
#返回改进的相似度函数
return 1/(1+sqrt(sum_all))
##-----------------------pearson相关度系数------------------------##
def sim_pearson(prefer, person1, person2):
sim = {}
#查找双方都评价过的项,并将相同的项添加到字典sim中
for item in prefer[person1]:
if item in prefer[person2]:
sim[item] = 1
简单的推荐系统搭建--Python(pearson,欧几里得相似度)
最新推荐文章于 2025-06-01 16:37:31 发布