2013-04-17 84 views
1

所以我一直在尝试这一段时间,但只是不能得到它的工作。如果您查看图片,您会看到x和y轴上有2个人,并且这两个人都是他们给电影的评分。问题是我如何计算曼哈顿与人之间的距离。曼哈顿距离推荐系统Python

enter image description here

所以这是我已经有... 编辑 我忘了说,首选项是PERSONNAME为重点,并与第二字典作为值的字典。第二字典包含电影,重点和评价作为价值..和PERSON1和2只是名称字符串可以在首选项中找到

def sum_manhattan(prefs,person1,person2): 
    """Calculates the Manhattan distance between two critics""" 
    total = 0 
    ##assume person1 is the x axes and person 2 is the y axes 
    x = prefs[person1] 
    y = prefs[person2] 

    for movie in x: 
     if movie in y: 
      total = abs(x[movie]-y[movie]) 
    return total 

任何帮助都是欢迎的。

+0

什么是不工作?我看到在循环中你总共= abs(...)。这是你在你的程序中做了什么,或者是你在问题中错误输入的内容? – civilu

+0

我们是否假定prefs,person1和person2的结构与编程集体智能(图像被解除)相同? http://answers.oreilly.com/topic/1066-how-to-find-similar-users-with-python/ – Alkini

+0

我很抱歉..是的,这正是它是什么,但这是我的教授给我的 我忘了说prefs是一个以personname为关键字的词典,第二个词典是它的值。第二个字典包含电影作为关键和评级作为价值..而person1和2只是名称的字符串,可以在prefs –

回答

1

基于链接贴通过Alkini,我会说,你应该更换

total = abs(x[movie]-y[movie]) 

total += abs(x[movie]-y[movie]) 

使事情工作。

您发布的代码所做的是返回最后一部电影的收视率之差的绝对值,而我认为您需要为所有电影添加收视率差异。

+0

arg yea找到!我非常愚蠢的看不到:P 但无论如何谢谢你! –