weixin_46578440 2023-02-02 13:06 采纳率: 0%
浏览 62
已结题

Django运行时第二个推荐界面无法进入

基于Django框架的电影推荐系统当跳转到推荐结果界面时发生错误
def recommend1(request):
    USERID = int(request.GET["userIdd"]) + 1000
    Insertposter.objects.filter(userId=USERID).delete()
    #selectMysql()
    read_mysql_to_csv('users/static/users_resulttable.csv',USERID)  #追加数据,提高速率
    ratingfile = os.path.join('users/static', 'users_resulttable.csv')
    usercf = UserBasedCF()
    #userid = '1001'
    userid = str(USERID)#得到了当前用户的id
    print(userid)
    usercf.generate_dataset(ratingfile)
    usercf.calc_user_sim()
    usercf.recommend(userid)    #得到imdbId号

  def recommend(self, user):
        ''' Find K similar users and recommend N movies. '''
        matrix.clear()   #每次都要清空
        K = self.n_sim_user  # 这里等于20
        N = self.n_rec_movie  # 这里等于10
        rank = dict()  # 用户对电影的兴趣度
        # print(self.initialset[user])
        watched_movies = self.trainset[user]  # user用户已经看过的电影  只包括训练集里的
        # 这里之后不能是训练集
        # watched_movies = self.initialset[user]
        for similar_user, similarity_factor in sorted(user_sim_mat[user].items(),
                                                      key=itemgetter(1), reverse=True)[
                                               0:K]:  # itemgetter(1)表示对第2个域(相似度)排序   reverse=TRUE表示降序
            for imdbid in self.trainset[similar_user]:  # similar_user是items里面的键,就是所有用户   similarity_factor是值,就是对应的相似度
                if imdbid in watched_movies:
                    continue  # 如果该电影用户已经看过,则跳过
                # predict the user's "interest" for each movie
                rank.setdefault(imdbid, 0)  # 没有值就为0
                rank[imdbid] += similarity_factor   #rank[movie]就是各个电影的相似度
                # 这里是把和各个用户的相似度加起来,而各个用户的相似度只是基于看过的公共电影数目除以这两个用户看过的电影数量积
                #print(rank[movie])
        # return the N best movies
       # rank_ = dict()
        rank_ = sorted(rank.items(), key=itemgetter(1), reverse=True)[0:N]  #类型是list不是字典了
        for key,value in rank_:
            matrix.append(key)    #matrix为存储推荐的imdbId号的数组
            #print(key)     #得到了推荐的电影的imdbid号
        print(matrix)
        #return sorted(rank.items(), key=itemgetter(1), reverse=True)[0:N]
        return matrix

img

img

  • 写回答

4条回答 默认 最新

  • 翰墨之道 2023-02-11 14:27
    关注

    错误原因可能是:
    1.用户ID获取错误:在recommend1函数中,USERID变量可能获取不到正确的用户ID,导致推荐结果出错。
    2.数据库操作错误:在recommend1函数中,Insertposter.objects.filter(userId=USERID).delete()可能出现操作数据库的错误,导致推荐结果出错。
    3.读取文件错误:在recommend1函数中,read_mysql_to_csv('users/static/users_resulttable.csv',USERID)可能出现读取文件的错误,导致推荐结果出错。
    4.推荐算法错误:在recommend函数中,usercf.recommend(userid)可能出现推荐算法的错误,导致推荐结果出错。
    5.matrix没有被正确清空。
    注意事项:
    1.在研发电影推荐系统时,要确保用户ID获取正确,以免出现推荐结果错误的情况。
    2.在操作数据库时,要确保操作正确,以免出现推荐结果错误的情况。
    3.在读取文件时,要确保文件路径正确,以免出现推荐结果错误的情况。
    4.在使用推荐算法时,要确保算法正确,以免出现推荐结果错误的情况。
    5. 在每次推荐之前,要确保matrix被正确清空,以免推荐结果重复。
    6. 在推荐时,要确保用户已经看过的电影不会被重复推荐。
    7. 在计算用户相似度时,要确保计算结果的准确性。

    评论

报告相同问题?

问题事件

  • 系统已结题 2月12日
  • 赞助了问题酬金15元 2月4日
  • 创建了问题 2月2日

悬赏问题

  • ¥15 matlab数据降噪处理,提高数据的可信度,确保峰值信号的不损失?
  • ¥15 怎么看我在bios每次修改的日志
  • ¥15 python+mysql图书管理系统
  • ¥15 Questasim Error: (vcom-13)
  • ¥15 船舶旋回实验matlab
  • ¥30 SQL 数组,游标,递归覆盖原值
  • ¥15 为什么我的数据接收的那么慢呀有没有完整的 hal 库并 代码呀有的话能不能发我一份并且我用 printf 函数显示处理之后的数据,用 debug 就不能运行了呢
  • ¥20 gitlab 中文路径,无法下载
  • ¥15 用动态规划算法均分纸牌
  • ¥30 udp socket,bind 0.0.0.0 ,如何自动选取用户访问的服务器IP来回复数据