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

news2025/1/12 6:09:52

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

1.项目背景

基于物品的协同过滤推荐(Item-based CF)的假设原理为:跟你喜欢的东西相似的东西你也很有可能喜欢。基于物品的协同过滤推荐并不通过对item的评分来评测item之间的相关性,而是基于item的相似性做推荐,其核心就是:给用户推荐他之前喜欢的物品的相似物品。

首先使用训练数据得到用户的偏好信息矩阵和物品的特征信息矩阵,然后计算用户对未进行评分电影的偏好分,最后选取前K个推荐给用户

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

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 评估指标及结果

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

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

关键代码如下:

8.结论与展望

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

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

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

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

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

相关文章

python的数据可视化

python画图1.使用pyecharts画图1.1 画地图1.1.1 画2D中国地图1.1.2 画2D世界地图1.1.3 画3D世界地图1.2 pyecharts的三种图片渲染工具1.2.1 snapshot_selenium1.2.2 snapshot_phantomjs1.2.3 snapshot_pyppeteer1.3 词云图1.3.1依据图片渲染出指定形状的词云图1.3.2渲染出指定大…

基于Android的学生信息管理App设计(Android studio开发)

目 录 一、 题目选择(题目、选题意义) 3 二、 设计目的 3 1、 初衷 3 2、 结合实际 3 3、 使用工具 3 三、 最终页面效果展示 4 1、 登陆界面 4 2、 主界面 5 3、 各个功能模块 6 四、 各部分设计 11 1、活动页面Activity布局文件 11 2、Activity的编程 …

基于JSP网上书城的设计与实现

项目描述 临近学期结束,还是毕业设计,你还在做java程序网络编程,期末作业,老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据疫情当下,你想解决的问…

Figma UI UX设计教程

Figma UI UX设计教程 使用 Figma 获得 UI 设计、用户界面、用户体验设计、UX 设计和网页设计方面的工作 课程英文名:Figma UI UX Design Essentials 此视频教程共10.0小时,中英双语字幕,画质清晰无水印,源码附件全 下载地址 课…

毕业设计-基于机器视觉的行人车辆跟踪出入双向检测计数

目录 前言 课题背景和意义 实现技术思路 实现效果图样例 前言 📅大四是整个大学期间最忙碌的时光,一边要忙着备考或实习为毕业后面临的就业升学做准备,一边要为毕业设计耗费大量精力。近几年各个学校要求的毕设项目越来越难,有不少课题是研究生级别难度的,对本科…

网格化微型空气质量站 浅谈工作原理

产品简介 网格化微型空气质量站是一种集数据采集、存储、传输和管理于一体的无人值守的环境监测系统,能全天候、连续、自动地监测环境,在提供PM10、PM2.5、 SO2、 NO2、CO、O3等参数数据的基础上,可扩展对VOCs、氯气、硫化氢、氨气等多种特征…

[附源码]Python计算机毕业设计Django勤工俭学管理小程序

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

Nginx的常用命令和配置文件

常用命令 1.查看 nginx版本号 在/usr/local/nginx/sbin 目录下执行 ./nginx -v 2.启动命令 在/usr/local/nginx/sbin 目录下执行 ./nginx 3.关闭命令 在/usr/local/nginx/sbin 目录下执行 ./nginx -s stop 4.重新加载命令 在/usr/local/nginx/sbin 目录下执行 ./nginx …

主流时序数据库分析及选型

目录一、当前主流的时序数据库二、主流时序数据库分析1、[Influxdb](https://docs.influxdata.com/influxdb)2、[Timescale](https://docs.timescale.com/)3、[Apache Druid](https://druid.apache.org/docs/latest/design/index.html)4、[Kdb](https://code.kx.com/home/)5、[…

牛客网基础知识强化巩固-周结04

链表强化训练 2022-11-28 打卡 知识点总结 磁盘字节和比特的问题 文件分配表FAT是管理磁盘空间的一种数据结构,用在以链接方式存储文件的系统中记录磁盘分配和跟踪空白磁盘块。整个磁盘仅设一张FAT表,其结构如下图所示。如果文件块号为2,查找…

使用 Echarts 插件实现柱状图功能

目录前言:什么是 Echarts 插件柱状图成品展示步骤:柱状图代码:总结:前言: 大家都知道,一般情况下,想要使用前端设置一个 柱状图 需要使用 canvas 画布进行编写,不仅代码多&#xff…

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

说明:这是一个机器学习实战项目(附带数据代码文档视频讲解),如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 基于用户的协同过滤推荐(User-based CF)的原理假设:跟你喜好相似的人…

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​…