推荐系统:寻找相近的用户——皮尔逊相关度评价

皮尔逊相关度,其实就是我们数学里面说的相关系数。为什么我们这里又要用这个皮尔逊相关度来衡量用户之间的相近程度呢?那是因为可能存在这样的情况,某人和我的爱好都是一样的,但是他在打分的时候总是相对于我偏高或者是偏低,如果按照先前的欧几里德来评价,或许给出的结论是他与我的爱好并不相同,所以又提出了一种皮尔逊相关度评价标准,可以在这种情况下给出比较好的结论。相关系数大家应该比较了解,代码如下:

from math import sqrt
def sim_person(prefs,p1,p2):
	si={}
	for item in prefs[p1]:
		if item in prefs[p2]:
			si[item]=1
	n=len(si)

	if n==0:
		return 0
	#	
	
	sum1=sum([prefs[p1][item] for item in si])
	sum2=sum([prefs[p2][item] for item in si])

	
	sum1Sq=sum([pow(prefs[p1][item],2) for item in si])
	sum2Sq=sum([pow(prefs[p2][item],2) for item in si])

	
	pSum=sum([prefs[p1][item]*prefs[p2][item] for item in si])

	
	num=n*pSum-sum1*sum2
	den=sqrt(n*sum1Sq-pow(sum1,2))*sqrt(n*sum2Sq-pow(sum2,2))
	if den==0:
		return 0
	r=num/den

	#print r
	return r


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值