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:)对齐 。

  • 相关阅读:
    简单的html5 File base64 图片上传
    PHP CURL POST
    PHP常用代码段:
    使用Sqlserver事务发布实现数据同步(转)
    几个SQL小知识(转)
    Sql语句摘要
    C#创建服务及使用程序自动安装服务,.NET创建一个即是可执行程序又是Windows服务的exe(转)
    说说C#的async和await(转)
    c#并发编程经典实例文摘
    [在职软件工程]数据挖掘-概念与技术
  • 原文地址:https://www.cnblogs.com/hongyedeboke/p/5783493.html
Copyright © 2011-2022 走看看