皮尔逊相关度评价算法

critics={'Lisa Rose':{'Lady in the Water':2.5, 'Snakes on a Plane' :3.5,

'Just My Luck':3.0, 'Superman returns':3.5, 'You,Me and Dupree':2.5,

'The Night Listener':3.0},

'Gene Seymour':{'Lady in the Water':3.0,'Snakes on a Plane':3.5,

'Just My Luck':1.5,'Superman Returns':5.0,'The Night Listener':3.0,

'You,,Me and Dupree':3.5},

'Michael Phillips':{'Lady in the Water':2.5, 'Snakes on a Plane':3.0,

'Superman Returns':3.5,'The Night Listener':4.0},

'Claudia Puig':{'Snakes on a Plane':3.5,'Just My Luck':3.0,

'The Night Listener':4.5,'Superman Returns':4.0,'You,Me and Dupree':2.5},

'Mich Lasalle':{'Lady in the Water':3.0,'Snakes on a Plane':4.0,

'Just My Luck':2.0,'Superman Returns':3.0,'The Night Listene ':3.0,

'You,Me and Dupree':2.0},

'Jack Mattews':{'Lady in the Water':3.0,'Snakes on a Plane':4.0,

'The Night Listene ':3.0,'Superman Returns':5.0,'You,Me and Dupree':3.5},

'Toby':{'Snakes on a Plane':4.5,'You,Me and Dupree':1.0,'Superman Returns':4.0}}

from math import sqrt

#返回一个有关person1与person2的基于距离的相似度评价

def sim_distance(prefs,person1,person2):

#得到shared_items的列表

si={}

for item in prefs[person1]:

if item in prefs[person2]:

si[item]=1

#如果两者没有共同之处,则返回0

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))

#返回p1和p2的皮尔逊相关系数

def sim_pearson(prefs,p1,p2):

#得到双方都曾评价过得物品列表

si={}

for item in prefs[p1]:

if item in prefs[p2]:si[item]=1

#得到列表元素的个数

n=len(si)

#如果两者都没有共同之处,则返回1

if n==0:return 1

#对所有偏好求和

sum1=sum([prefs[p1][it] for it in si])

sum2=sum([prefs[p2][it] for it in si])

#求平方和

sum1Sq=sum([pow(prefs[p1][it],2) for it in si])

sum2Sq=sum([pow(prefs[p2][it],2) for it in si])

#求乘积之和

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

#计算皮尔逊评价值

num=pSum-(sum1*sum2/n)

den=sqrt((sum1Sq-pow(sum1,2)/n)*(sum2Sq-pow(sum2,2)/n)

if  den == 0 : return 0

r=num/den

return r


运行时总是出现invalid syntax错误,错误位置为最后 if den==0 : return 0中的冒号位置上,怎么都找不出原因来,如果有会的大神求指教

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 撒谎分三种: (1)撒谎是为了逃避惩罚而撒谎,称防御性撒谎。 (2)撒谎是为了获得利益,快乐,甚至某种特权,称获益...
    善默勤容阅读 1,950评论 0 0
  • 俗话说,摄影是用光的艺术。但是这句话的调太高了,需要很深的摄影道行才能理解才能展现“光”的艺术。不过我也尝试用手机...
    不许瞎搞阅读 4,513评论 4 7
  • 蝉声鸣鸣 烈夏炎炎 雨后洼洼 花果葱葱 行人慌慌 争相锵锵 不知何何 笑脸盈盈
    千步梦寻阅读 3,345评论 2 3
  • 健身小知识2017/3/15 今晚练什么,胸? “今晚练什么”应该是健身房打照面问的最多的一句了,因为大部分人使用...
    wuli哥哥阅读 1,315评论 0 1

友情链接更多精彩内容