赞
踩
博主介绍:✌全网粉丝10W+,前互联网大厂软件研发、集结硕博英豪成立工作室。专注于计算机相关专业毕业设计项目实战6年之久,选择我们就是选择放心、选择安心毕业✌感兴趣的可以先收藏起来,点赞、关注不迷路✌
毕业设计:2023-2024年计算机毕业设计1000套(建议收藏)
毕业设计:2023-2024年最新最全计算机专业毕业设计选题汇总
Django框架、双推荐算法(基于用户+基于物品)、书架、评论收藏、小说阅读、MySQL数据库、后台管理
系统的推荐功能主要通过双推荐算法实现。基于用户的推荐算法根据用户的历史阅读行为和偏好,推荐与其相似的用户喜欢的小说。基于物品的推荐算法则根据小说的内容、标签等信息,推荐与用户喜好相符的小说。
(1)系统首页
(2)小说分类浏览
(3)根据小说推荐
(4)小说数据详情
(5)小说浏览阅读
(6)阅读记录
(7)后台数据管理
小说推荐系统是基于Django框架开发的一个应用,它利用双推荐算法(基于用户和基于物品)来为用户推荐适合他们阅读的小说。
该系统具有以下主要功能:
系统的推荐功能主要通过双推荐算法实现。基于用户的推荐算法根据用户的历史阅读行为和偏好,推荐与其相似的用户喜欢的小说。基于物品的推荐算法则根据小说的内容、标签等信息,推荐与用户喜好相符的小说。
通过这些功能和算法,小说推荐系统可以为用户提供个性化的阅读推荐,提高用户的阅读体验和满意度。
#!/usr/bin/env python #-*-coding:utf-8-*- import math import pdb #基于小说物品推荐 class ItemBasedCF: def __init__(self): self.readData() # print(self.train) def readData(self): from connect_mysql import ConnectMysql# root 后面 修改自己的密码 con = ConnectMysql('localhost', 3306, 'root', '123456', 'novel_recommend') # 查询 # 收藏 sql = 'SELECT * FROM Collections;' shoucang = con.query(sql, None) # 阅读 sql = 'SELECT * FROM ReadNovel;' read = con.query(sql, None) # 评论CommentModels sql = 'SELECT * FROM CommentModels;' comment = con.query(sql, None) ############################## # 开始统计用户评分id表 # 收藏5 阅读 3 评论(1多个) 比例 # 统计用户id user_item = {} for i in shoucang: # 3 2 if str(i[3]) not in user_item.keys(): user_item[str(i[3])] = {} user_item[str(i[3])][str(i[2])] = 5 else: user_item[str(i[3])][str(i[2])] = user_item[str(i[3])].get(str(i[2]), 0) + 5 for i in read: # 1 2 if str(i[1]) not in user_item.keys(): user_item[str(i[1])] = {} user_item[str(i[1])][str(i[2])] = 3 else: user_item[str(i[1])][str(i[2])] = user_item[str(i[1])].get(str(i[2]), 0) + 3 for i in comment: if str(i[1]) not in user_item.keys(): user_item[str(i[1])] = {} user_item[str(i[1])][str(i[2])] = 1 else: user_item[str(i[1])][str(i[2])] = user_item[str(i[1])].get(str(i[2]), 0) + 1 self.train = user_item def ItemSimilarity(self): #建立物品-物品的共现矩阵 cooccur = dict() #物品-物品的共现矩阵 buy = dict() #物品被多少个不同用户购买N for user,items in self.train.items(): for i in items.keys(): buy.setdefault(i,0) buy[i] += 1 cooccur.setdefault(i,{}) for j in items.keys(): if i == j : continue cooccur[i].setdefault(j,0) cooccur[i][j] += 1 #计算相似度矩阵 self.similar = dict() for i,related_items in cooccur.items(): self.similar.setdefault(i,{}) for j,cij in related_items.items(): self.similar[i][j] = cij / (math.sqrt(buy[i] * buy[j])) return self.similar #给用户user推荐,前K个相关用户,前N个物品 def Recommend(self,user,K=10,N=10): rank = dict() action_item = self.train[user] #用户user产生过行为的item和评分 for item,score in action_item.items(): sortedItems = sorted(self.similar[item].items(),key=lambda x:x[1],reverse=True)[0:K] for j,wj in sortedItems: if j in action_item.keys(): continue rank.setdefault(j,0) rank[j] += score * wj return dict(sorted(rank.items(),key=lambda x:x[1],reverse=True)[0:N]) #声明一个ItemBasedCF的对象 # item = ItemBasedCF() # item.ItemSimilarity() # recommedDict = item.Recommend("3")#参数为用户id # for k,v in recommedDict.items(): # print(k,"\t",v)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。