zoukankan      html  css  js  c++  java
  • Note4: 代码错误

    真的是一遍一遍的找代码的错误啊,第一个函数sim_distance就错了,可是当时只有一个测试数据,没有检查出来。

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

    错误是在最后 return 1/(1+sqrt(sum_of_squares))  应该是 return 1/(1+sum_of_squares)

    另外一个是因为缩进的错误:

    #利用所有他人评价值的加权平均,为某人提供建 议
    def getRecommendations(prefs,person,similarity=sim_pearson):
        totals={}
        simSums={}
        for other in prefs:
            #不要和自己比较
            if other==person: continue
            sim=similarity(prefs,person,other)
            
            #忽略评价值为0或小于0的情况
            if sim<=0: continue
            for item in prefs[other]:
                
                #只对自己还未曾看过的影片进行评价
                if item not in prefs[person] or prefs[person][item]==0:
                    #相似度*评价值
                    totals.setdefault(item,0)
                    totals[item]+=prefs[other][item]*sim
                    #相似度之和
                    simSums.setdefault(item,0)
                    simSums[item]+=sim
            
            #建立一个归一化的列表
            rankings=[(total/simSums[item],item) for item,total in totals.items()]
            
            #返回经过排序的列表
            rankings.sort()
            rankings.reverse()
            return rankings    

    这几行:

            #建立一个归一化的列表
            rankings=[(total/simSums[item],item) for item,total in totals.items()]
            
            #返回经过排序的列表
            rankings.sort()
            rankings.reverse()
            return rankings       

    应该与第一个for(for other in prefs:)对齐 。

  • 相关阅读:
    449. Serialize and Deserialize BST
    3. Longest Substring Without Repeating Characters
    2. Add Two Numbers
    240. Search a 2D Matrix II
    5. Longest Palindromic Substring
    数位DP专题(开坑。
    POJ 2356
    HDU 4055
    HDU 4054
    HDU 1559
  • 原文地址:https://www.cnblogs.com/hongyedeboke/p/5783493.html
Copyright © 2011-2022 走看看