Python实现基于用户的协同过滤推荐算法构建电影推荐系统

news2024/9/21 8:01:26

说明:这是一个机器学习实战项目(附带数据+代码+文档+视频讲解),如需数据+代码+文档+视频讲解可以直接到文章最后获取。

1.项目背景

基于用户的协同过滤推荐(User-based CF)的原理假设:跟你喜好相似的人喜欢的东西你也很有可能喜欢。先找到相似的用户,再找到他们喜欢的物品,基于用户的协同过滤通过用户的历史行为数据,发现用户喜欢的物品,并对这些偏好进行打分和度量,然后根据不同的用户对物品的评分或者偏好程度来评测用户之间的相似性,对有相同偏好的用户进行物品推荐。

本项目应用用户的协同过滤推荐算法进行相似度计算、给用户推荐及模型评估。

2.数据获取

本次建模数据来源于网络(本项目撰写人整理而成),数据项统计如下:

 数据详情如下(部分展示):

数据解释:例如 1::1193::5::978300760

该条记录队列的列是 UserID::MovieID::Rating::Timestamp,表示id为1的用户在978300760时对1193电影评分为5。

3.数据预处理

3.1 用Pandas工具查看数据

使用Pandas工具的head()方法查看前五行数据: 

关键代码:

3.2 数据缺失查看

使用Pandas工具的info()方法查看数据信息:

从上图可以看到,总共有3个变量,数据中无缺失值,共1000209条数据。

关键代码:

4.探索性数据分析

4.1 评分变量直方图

用Matplotlib工具的hist()方法绘制直方图:

从上图可以看到,评分平均记录主要集中在3.0~4.5之间。

5.特征工程

5.1 数据集拆分

通过splitData()方法进行数据集拆分,关键代码如下:

6.构建电影推荐系统

主要使用基于用户的协同过滤推荐算法构建电影推荐系统。

6.1 相似度计算

关键代码:

相似度计算结果展示:

6.2 对用户进行推荐

对用户1进行推荐,推荐结果如下:

 通过上表可以看出,是按照推荐值的大小从高到低进行排序的。

7.模型评估

7.1 评估指标及结果

评估指标主要包括准确率。

从上表可以看出,准确率为23%,作为一个推荐系统,在数据量有限的情况下,此效果良好。

关键代码如下:

8.结论与展望

综上所述,本项目采用了基于用户的协同过滤推荐算法来构建电影推荐系统,主要包括数据集的读取、拆分、探索性数据分析、相似度计算、对用户进行推荐、模型的评估等,最终证明了我们提出的模型效果较好。

本次机器学习项目实战所需的资料,项目资源如下:

项目说明:
链接:https://pan.baidu.com/s/1dW3S1a6KGdUHK90W-lmA4w 
提取码:bcbp

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/60343.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

RNA-seq 详细教程:搞定count归一化(5)

学习目标 了解如何在归一化过程中列出不同的 uninteresting factors(无关因素)了解常用的归一化方法,已经如何使用了解如何创建 DESeqDataSet 对象及其结构了解如何使用 DESeq2 进行归一化1. 归一化 差异表达分析工作流程的第一步是计数归一化,这是对样本…

exploit-db图文教程

一、ExploitDB 简介 ExploitDB 是一个面向全世界黑客的漏洞提交平台,该平台会公布最新漏洞的相关情况,这些可以帮助企业改善公司的安全状况,同时也以帮助安全研究者和渗透测试工程师更好的进行安全测试工作。Exploit-DB 提供一整套庞大的归档…

Spring框架(十):Spring注解开发配置MyBatis框架等第三方框架

Spring注解开发配置MyBatis框架等第三方框架引子注解配置MyBatis注解整合Mapper的原理Import注解整合第三方框架引子 痛定思痛,主要问题出现在自己雀氏不熟悉框架底层、一些面试题,以及sql的一些情况淡忘了。 本章节的开始是对于过去的重新回顾&#xf…

IDEA常用插件(持续更新中......)

再使用idea办公后,会发现安装一些插件,对我们来说会事半功倍。同时也会让同事也开始情不自禁的嘚瑟了。 1.Free Mybatis plugin mybatis和mybatis-plus基本上是目前最主流的ORM框架了,相比于Hibernate更加灵活,性能也更好。所以…

爬虫入门——1、基本概念

1、爬虫是什么 网络爬虫(又称网络机器人),是一种按照一定的规则,自动地抓取网络信息的程序或者脚本。 通俗地讲,我们把互联网比作一张大蜘蛛网,每个站点资源比作蜘蛛网上的一个结点,爬虫就像一…

【spark】第二章——SparkCore之运行架构及核心编程

文章目录1. Spark 运行架构1.1 1 运行架构1.2 核心组件1.2.1 Driver1.2.2 Executor1.2.3 Master & Worker1.2.4 ApplicationMaster1.3 核心概念1.3.1 Executor 与 Core1.3.2 并行度(Parallelism)1.3.3 有向无环图(DAG)1.4 提交…

Compiere的应用字典介绍

模型驱动架构介绍 本章介绍了Compiere的模型驱动架构和Compiere的数据字典功能。 在大多数应用程序中,开发人员必须设计代码并测试每个屏幕。这可能是非常耗时的,并导致整个应用程序在外观和感觉以及功能方面的不一致。 这也会使用户难以学习像ERP这样复…

H5 Canvas 垂直箭头绘制

效果 ⚠ 因为使用的是斜率来处理的垂直逻辑 tan,当为被除数为0时做了特殊处理,两点自由变换时到达零界点会有卡顿。 推导 开始复习初中二年级数学知识 斜率k的公式:k(y1−y2)(x1−x2)k \dfrac{(y_1 -y_2)}{(x_1 - x_2)}k(x1​−x2​)(y1​…

【三维目标检测】VoteNet(一)

VoteNet是用于点云三维目标检测模型算法,发表在ICCV 2019《Deep Hough Voting for 3D Object Detection in Point Clouds》,论文地址为“https://arxiv.org/abs/1904.09664”。VoteNet核心思想在于通过霍夫投票的方法实现了端到端3D对象检测网络&#xf…

LeetCode 852. 山脉数组的峰顶索引

🌈🌈😄😄 欢迎来到茶色岛独家岛屿,本期将为大家揭晓LeetCode 852. 山脉数组的峰顶索引 ,做好准备了么,那么开始吧。 🌲🌲🐴🐴 一、题目名称 Leet…

[Error]适配iPad时调用UIAlertController和UIActivityViewController软件崩溃问题

问题&#xff1a; 适配iPad时&#xff0c;调用UIAlertController和UIActivityViewController软件崩溃。iPhone设备上软件运行正常。 错误打印如下&#xff1a; Thread 1: "UIPopoverPresentationController (<UIPopoverPresentationController: 0x12f33b020>) sho…

管道模式 流处理

&#xff08;一&#xff09;介绍 管道这个名字源于自来水厂的原水处理过程。原水要经过管道&#xff0c;一层层地过滤、沉淀、去杂质、消毒&#xff0c;到管道另一端形成纯净水。我们不应该把所有原水的过滤都放在一个管道中去提纯&#xff0c;而应该把处理过程进行划分&#…

Pytorch Bert 中文分类 运行代码时候遇到的问题

问题1 bert AutoModel.from_pretrained(bert-base-chinese) 报错信息如下&#xff1a; RuntimeError: Error(s) in loading state_dict for BertModel: size mismatch for bert.embeddings.word_embeddings.weight: copying a param with shape torch.Size([21128, 768…

m基于GA遗传算法的PMSM永磁同步电机参数最优计算matlab仿真

目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 永磁同步电机&#xff08;PMSM&#xff09;基本结构为定子、转子和端盖。其中转子磁路结构是永磁同步电机与其它电机最主要的区别&#xff0c;其在很大程度上决定了永磁同步电机的实际性能指标。…

AtCoder Beginner Contest 280 老年人复建赛

好久没更新了&#xff0c;因为最近p事实在是有点多&#xff0c;让人心烦意乱 还是安安心心打比赛舒服 A&#xff0c;B&#xff0c;C就不讲啦 D - Factorial and Multiple 大意&#xff1a; 给定一个数字k<1e12&#xff0c;求最小的数字n满足n!%k0; 思路1&#xff1a; 不…

hadoop完全分布式环境搭建详细版

1. hadoop集群规划 1.准备3台客户机(关闭防火墙&#xff0c;静态ip&#xff0c;主机名称) 2.安装jdk 3.配置环境变量 4.安装hadoop&#xff0c;hadoop版本是3.1.3,包名为hadoop-3.1.3.tar.gz 5.配置环境变量 6.配置集群 7.单点启动 8.配置ssh 9.群起集群并测试集群 注意: NameN…

Ubuntu20.04静态路由表连通局域网各网段主机 Vmware WorkStation

文章目录示例拓扑虚拟机的三种网络模式虚拟网络编辑器的设置虚拟主机与虚拟路由设置细节Ubuntu20.04设置静态IP给R1添加双网卡给R1、R2开启转发功能配置路由表References示例拓扑 宿主机是Windows11 PC与Router均为 Ubuntu20.04系统。 虚拟机的三种网络模式 虚拟机默认是只初…

如何利用InVest模型估算区域产水量

1.什么是InVEST模型 InVEST模型&#xff08;Integrated Valuation of Ecosystem Services and Tradeoffs &#xff09;是生态系统服务评估与权衡模型的简称&#xff0c;是美国自然资本项目组开发的、用于评估生态系统服务功能量及其经济价值、支持生态系统管理和决策的一套模型…

十四、使用 Vue Router 开发单页应用(1)

本章概要 感受前端路由 HTML 使用路由模块开发使用路由 传统的 Web 应用程序不同页面间的跳转都是向服务器发起请求&#xff0c;服务器处理请求后向浏览器推送页面。 在单页应用程序中&#xff0c;不同视图&#xff08;组件的模板&#xff09;的内容都是在同一个页面中渲染&…

golang 琐碎知识

golang 琐碎知识&#xff08;持续进行&#xff09; 时间格式 time.now.Format("2006-01-02T 15:04:05")make声明切片bug Golang&#xff1a;statusList : make([]*model.StatusList, 6) 会声明一个长为6的null切片&#xff0c;使用append添加时不会将null覆盖掉去掉切…