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

news2024/9/20 14:31:40

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

 

1.项目背景

基于内容(Content Based,CB)的推荐算法,根据用户过去是一段时间内喜欢的物品,由此推测计算出用户的偏好,为用户推荐相似的物品,“内容就是”用户过去一段时间内喜欢的物品,以及由此计算出的用户偏好。该算法的原理非常简单,向用户推荐喜欢的Item的相似的Item。

本项目使用训练数据得到用户的偏好信息矩阵和物品的特征信息矩阵,然后计算该用户对未进行评分电影偏好程度,选取前N个用户推荐给用户。

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

2.数据获取

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

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

ratings.dat数据

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

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

users.dat数据:

 

movies.dat数据:

数据解释:例如 1::Toy Story (1995)    ::Animation|Children's|Comedy

数据列以::进行间隔,第1列为电影ID,第2列为电影名称,第3列为电影类型,类型之间使用|进行分割。

3.数据预处理

3.1 用Pandas工具查看数据

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

 关键代码:

3.2 数据缺失查看

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

 从上图可以看出每种类型的数据样本数和数据项数,数据没有缺失值。

关键代码:

4.探索性数据分析

4.1 评分变量直方图

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

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

5.特征工程

5.1 电影特征信息矩阵

关键代码如下: 

部分结果展示: 

从上图可以看出,特征矩阵是一个电影类型的矩阵信息,其中1代表属于这种电影类型,0代表不属于这种电影类型。

5.2 用户特征信息矩阵

关键代码如下: 

电影类型偏好程度,部分结果展示: 

6.构建电影推荐系统

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

6.1 获取用户喜好程度并对用户进行推荐

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

关键代码如下:

7.模型评估

7.1 评估指标及结果

评估指标主要包括准确率。随机选择100个用户进行推荐,计算推荐的准确率:

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

关键代码如下:

8.结论与展望

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

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

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

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

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

相关文章

DHTMLX Spreadsheet JavaScript Pro 5.0

Spreadsheet — Web-Based Spreadsheet Solution 破解版DHTMLX Spreadsheet is a framework-agnostic JavaScript solution that allows you to quickly add an editable Excel-like spreadsheet on a web page. Unlike online services, DHTMLX Spreadsheet allows you to st…

Windows x64隐藏可执行内存

文章目录实现效果实现原理VAD内存什么是VAD内存查看VAD内存VAD属性VAD内存可利用的点x64分页机制W7 x64下任意地址PDT PTE算法W10 x64定位随机化页表基址实现隐藏可执行内存隐藏内存对抗实现效果 驱动程序在Test进程中申请一块内存地址并打印,然后控制台程序在接收到…

Web中的Bias(更新中)

目录前言数据偏见对人们的影响衡量偏见活跃偏差或少数人的智慧数据偏见其他参考文献前言 本文参考Ricardo Baeza-Yates 2018年发表在《Communications of the ACM》的论文Bias on the Web,论文旨在提高人们对网络使用和内容中存在的偏见对我们所有人造成的潜在影响…

Methyltetrazine-PEG4-NHS ester,甲基四嗪PEG4琥珀酰亚胺酯

一:产品描述 1、名称 英文:Methyltetrazine-PEG4-NHS ester 中文:甲基四嗪-四聚乙二醇-琥珀酰亚胺酯 2、CAS编号:1802907-92-1 3、所属分类:Tetrazine 4、分子量:533.54 5、分子式:C24H3…

qt单线程实现顺序事件的处理不卡顿技巧(IDE开发)

需求: 我现在是这样的需求,我正在开发一款嵌入式IDE中,编辑器中光标改变,右侧的符号大纲能对应的改变选中项。 这里的过程是这样的,鼠标位置改变事件函数里,通过光标行号,计算得到当前处于的符…

通过私钥连接腾讯云,实现免密远程登录

一、创建 SSH 密钥 系统提示不会保存私钥,要求用户在 10 分钟之内自行下载私钥,要保存在本地电脑和邮箱里面备用。 二、绑定密钥到云服务器 勾选刚才创建的 SSH 密钥,点击上面的绑定云主机,弹窗中要先找到你云主机的地域&#x…

【计算机毕业设计】74.家教平台系统源码

一、系统截图(需要演示视频可以私聊) 摘 要 21世纪的今天,随着社会的不断发展与进步,人们对于信息科学化的认识,已由低层次向高层次发展,由原来的感性认识向理性认识提高,管理工作的重要性已逐…

CentosLinux 6.5安装教程

、开始安装Centos6.5:我们选择“inistall system with basic video driver” 注意:这是一种精简系统的安装模式: 1.安装或升级现有的系统; 2.安装系统并使用基本的显卡驱动; 3.进入系统修复模式; 4.从硬盘…

[附源码]Python计算机毕业设计SSM竞赛报名管理系统(程序+LW)

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

【计算机毕业设计】基于jsp网上书店(源代码+论文)

网上书店系统 1.需求分析。 参考设计要求,及可行性的分析,我们确定了如下的需求: 1.数据库设计科学合理。 2.网站主页面简洁美观,可以天蓝色为主色调。 3.网站主页显示各个分类的及总的畅销表、新书榜、推荐榜,显…

Allegro如何锁定器件操作指导

Allegro如何锁定器件操作指导 Allegro上可以锁定器件,避免误操作被移动,具体操作如下 选择fix命令 Find选择Symbols 框选需要锁定的器件 可以看到器件被锁住了 除了这个方法之外,还有另外一种方法锁定器件,选择edit-property Find选择Symbols

ADSP-21569/ADSP-21593的开发入门(中)

ADSP-21569/21593的软件准备 安装CCES软件,我装的是2.10.1,官网可以下载,我也可以提供。软件安装没什么可说的,全部下一步,软件的试用跟注册可以单独联系我。 https://www.analog.com/cn/design-center/evaluation-h…

做短视频创业之前必须确定的内容:变现形式,短视频玩法和人设定位

做短视频创业之前必须确定的内容:变现形式,短视频玩法和人设定位。这是短视频的根基,打好基础才能更好的实现盈利目标。 开始做短视频的时候,走了很多弯路,这段时间总结了之前的经验教训,结合在我赢助手上…

【编程题】【Scratch四级】2022.09 班级成绩处理

班级成绩处理 三年级1班有36个小朋友,某次数学考试,同学们的成绩在78-100之间,求出该班学生的平均分和成绩优秀的人数(成绩大于85分)。 1. 准备工作 (1)默认小猫角色,默认白色背景…

Python学习基础笔记二十一——迭代器

列表,我们使用for循环来取值,我们把每个值都取到,不需要关心每一个值的位置,因为只能顺序的取值,并不能跳过任何一个去取其他位置的值。那么我们为什么可以使用for循环来取值,for循环内部是怎么工作的呢&am…

【力扣算法简单五十题】17.路径总和

给你二叉树的根节点 root 和一个表示目标和的整数 targetSum 。判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum 。如果存在,返回 true ;否则,返回 false 。 叶子节点 是指没有子节点…

模仿Spring注入接口的代理类全过程

前言 在使用mybatis或者openFeign时只定义了一个接口类,并无实现类,可以把接口注入到service中并且能调用方法返回值。一个接口并无实现类,为什么可以实例化并且交给了spring管理。mybatis,OpenFeign又是怎么实现的?接…

生物化学 核磁共振 氢谱 n+1定律 邻碳耦合 同碳耦合

核磁共振氢谱 基础 自旋量子数 自旋为S的粒子,取向的范围为[-S,S],但是需要间隔1。比如质子的自旋为1/2,则有-1/2 ,1/2两个取向。取值的个数等于在外加磁场的情况下能够分裂的能级的个数。但是质量数和原子序数都为0的原子(C12,O16C^{12},O^{16}C12,O1…

Java ~ Executor ~ LinkedBlockingQueue【总结】

一 概括 简介 LinkedBlockingQueue(链接阻塞队列)类是BlockingQueue(阻塞队列)接口的主要实现类之一,也是Executor(执行器)框架最常搭配使用的实现之一,采用链表的方式实现。相比基于…

Qt+opencv 鼠标画线实现几何图形识别并动态创建

前言 使用Qt OpenCV实现,通过鼠标画线绘制几何图形,然后通过opencv进行图形轮廓识别,返回图形顶点,然后创建对应的几何图形添加到场景中。绘制使用QGraphics体系完成。 看效果图: 本文demo在这里 点击下载 环境: …