美文网首页
集体智慧编程:提供推荐_为评论者打分

集体智慧编程:提供推荐_为评论者打分

作者: 菜菜蜗牛 | 来源:发表于2018-11-13 19:16 被阅读0次

    对具体的某一用户,根据其他用户的评价结果,计算出他与每一个用户的相似程度,找出相似程度最高的前N位。
    在函数中,通过similarity指定使用的相关性算法。

    """
    为评论者打分
    """  
    #书中算法
    def topMatches(prefs,person,n = 5,similarity = sim_pearson):
        score = [(similarity(prefs,person,other),other)
                        for other in prefs if other != person]
        
        score.sort()  #从小到大
        score.reverse()   #反过来排
        return score[0:n]
    
    #自己编写
    def topMatches2(prefs,person,n = 5,similarity = sim_pearson):
        score = {}
        for item in prefs:
            if item != person:
                score[item] = similarity(prefs,person,item)
        
        score_sort = sorted(zip(score.values(),score.keys()))
        score_sort.reverse()
        score_sort = score_sort[0:n]
        return score_sort
    

    几个小笔记:

    1、列表排序,从小排到大
    score.sort()
    注意,这个score由元组组成 [(相似度,人名),……],它会根据元组第一个值进行排序。

    2、把列表元素顺序调转
    score.reverse()

    3、字典如何排序:
    (1)zip(score.values(),score.keys()),把字典中每个值组成(value,key)的元组,通过zip把这些元组构成列表。
    (2)score_sort = sorted(zip(score.values(),score.keys())),通过sorted函数,与scort.sort()等价。

    4、取列表前N个:
    score[0:n]

    相关文章

      网友评论

          本文标题:集体智慧编程:提供推荐_为评论者打分

          本文链接:https://www.haomeiwen.com/subject/edalfqtx.html