# -Collaborative-filtering-algorithm-
基于python实现,通过协同过滤算法实现的一个简单的豆瓣电影推荐系统
本次实验学习如何利用python、MySQL作为开发环境(主要调用pymysql、request、json、numpy、pandas等python库),通过爬取豆瓣电影数据,实现了一个基于基于用户协同过滤的简单推荐系统demo,笔者主要行文思路如下图:

## 数据获取
本次实验数据获取源选取自[豆瓣电影](https://movie.douban.com/),主要通过python中resquest库对数据进行爬取与处理,再通过pymysql库实现对数据的存储(此处未将数据全部导入SQL不作E-R图展示),最终爬取数据构成如下图

## 界面设计
界面设计主要通过python中PyQT5库进行实现,实现了初始的用户登录、用户注册与电影检索等初始功能,同时再结合推荐算法,可以实现推荐系统中对初始用户的冷启动、老用户个性化推荐功能。初始界面如下图所示:

@[toc](简单的豆瓣电影推荐系统demo)
>推荐毕设前的小项目demo,主要内容是ItemCF+简单的系统开发
# 前言
本次实验学习如何利用python、MySQL作为开发环境(主要调用pymysql、request、json、numpy、pandas等python库),通过爬取豆瓣电影数据,实现了一个基于基于用户协同过滤的简单推荐系统demo,笔者主要行文思路如下图:
# 背景介绍
如果说互联网的目标是连接一切,哪推荐系统的功能与作用就是建立起更加有效率的连接,推荐系统可以连接用户与内容与服务,可以为企业、政府等组织节省大量的成本,同时将有用的内容精准的投放到个性用户里,大大节省用户的时间成本。
# 开发部分介绍
## 数据获取与存储
本次实验数据获取源选取自[豆瓣电影](https://movie.douban.com/),主要通过python中resquest库对数据进行爬取与处理,再通过pymysql库实现对数据的存储(此处未将数据全部导入SQL不作E-R图展示),最终爬取数据构成如下图

## 界面设计
界面设计主要通过python中PyQT5库进行实现,实现了初始的用户登录、用户注册与电影检索等初始功能,同时再结合推荐算法,可以实现推荐系统中对初始用户的冷启动、老用户个性化推荐功能。初始界面如下图所示:

# 算法原理
## 推荐算法与冷启动简述
推荐算法的初衷想法就是希望把商品、内容精准的推送到用户手中,使得商品得到精准的流量,帮助用户省去选择和寻找信息的时间成本。
从电影的推荐系统角度看推荐算法,推荐系统主要需要解决的问题是推荐系统的冷启动、推荐系统怎样基于用户的兴趣推荐出准确的内容与信息?
对于推荐系统的冷系统的冷启动问题,主流解决思想有基于用户的冷启动、基于物品的冷启动、基于非个性化的推荐,本次实验只考虑新用户注册的情况,不考虑新物品进入系统的情况,故解决的是用户的冷启动问题,解决思想是根据新用户登入其自定义的个性标签(感兴趣的电影类型)定义出一大致的粗粒度的个性化用户画像,再根据这个画像做出一个个性化推荐的左端界面,右端界面为基于物品的热度的热门电影推荐。
完成用户的“冷启动”后,系统得到足够支撑推荐算法的用户行为数据,基于相关的推荐算法,可以对用户做出更加精确的推荐。结合笔者所查文献与资料,
常用推荐算法主要有:基于用户的协同过滤推荐、基于物品的协同过滤推荐、隐语义模型的推荐、基于图的推荐。结合所抓取数据的构成与体量,采用基于用户的协同过滤算法做系统的主要的推荐算法。
## 基于物品的协同过滤(ItemCF)
基于物品的协同过滤算法是目前业界应用做多的算法,如:亚马逊、YouTube其推荐算法基础都是该算法。基于物品的协同过滤在解决物品数量一定,但用户数量巨大的应用场景上很有优势,与本次实验解决问题类型相近故选用(豆瓣网站的电影数量是一定的,但是用户数量巨大。)在本次实验中ItemCF算法的实现思想主要为以下两个步骤:
1.计算物品间的相似度:
从物品上出发,可以定义物品的相似度计算公式为:$$w_{i j}=\frac{|N(i) \cap N(j)|}{|N(i)|}$$
其中分母|N(i)|是喜欢物品i的用户数,分子${|N(i) \cap N(j)|}$是既喜欢物品i同时也喜欢物品j的用户数量。不难看出,公式的定义是喜欢物品i的用户同时也喜欢物品j的用户比例,该公式一定程度上可以反映物品i、j的相似程度,但是对于j是热门物品的情况,其很多人都喜欢j,j的体量本身就很大,那么上述公式的计算结果 将接近于1,这对对于致力于挖掘长尾信息的推荐来说显然是一个不好的特性。因此,在此基础上加入对物品j权重的惩罚,得到改进的相似度计算公式为:
计算物品相似度的算法部分实现思路为:
(1)建立用户-物品倒排表(对每个用户建立一个其喜欢的物品的列表);
(2)对于每个用户,将其的物品列表两两在共现矩阵中加1;
(3)将各用户的共现矩阵相加得到总的共现矩阵C;
(4)将C矩阵归一化即得到物品之间的余弦相似矩阵W。
形象的实现思路如图:

2.根据物品相似度和用户的历史行为生成个性化的推荐列表:
在计算得到物品间的相似度后,再同如下公式计算得到用户u对物品j的兴趣:$$
p_{\text {uj }}=\sum_{i=N(u) \cap s(j, K)} w_{j i} r_{u i}
$$
其中N(u)是用户喜欢的物品的集合,S(j,K)是和物品j最相似的K个物品集合,s(j,K)是与物品j最相似的K个物品的集合,wij是物品i与物品j的相似度,rui是用户u对物品j的�
没有合适的资源?快使用搜索试试~ 我知道了~
基于python实现,通过协同过滤算法实现的一个简单的豆瓣电影推荐系统+源代码+文档说明

共2个文件
rar:1个
md:1个

1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉

温馨提示
- 不懂运行,下载完可以私聊问,可远程教学 该资源内项目源码是个人的毕设,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! <项目介绍> 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 --------
资源推荐
资源详情
资源评论






















收起资源包目录




共 2 条
- 1
资源评论

- 2301_798550072025-06-14感谢资源主分享的资源解决了我当下的问题,非常有用的资源。

机器学习的喵
- 粉丝: 2077
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 城市市政道路几何尺寸设计.ppt
- 公司信息化建设规划工作计划精选4篇.docx
- 浅谈溶洞地区桩基施工技术.doc
- 电气防火防爆基本措施.doc
- 地基讲稿-第1章-2.ppt
- 2011年终成本分析.doc
- 牛肉品质评定的感官指标及其测定方法.doc
- 大酒店中央空调安装工程施工组织设计(2).doc
- 见证取样检测混凝土砂浆强度检验.ppt
- 制作中国结的绳子名称.doc
- [河北]住宅楼高支架模板施工方案.doc
- 写字楼成本分级体系.docx
- 任务-(4)-知识四-划线及锯削基础.pptx
- 国际工程承包项目的工程变更.doc
- 智能小区通信网络方案设计书实施方案书.doc
- 第四合同段防坍塌--防坠落--反三违.doc
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈



安全验证
文档复制为VIP权益,开通VIP直接复制
