基于TensorFlow+CNN+协同过滤算法的智能电影推荐系统——深度学习算法应用(含微信小程序、ipynb工程源码)+MovieLens数据集(七)

news2025/1/11 21:53:03

目录

  • 前言
  • 总体设计
    • 系统整体结构图
    • 系统流程图
  • 运行环境
  • 模块实现
    • 1. 模型训练
      • 1)数据集分析
      • 2)数据预处理
      • 3)模型创建
      • 4)模型训练
      • 5)获取特征矩阵
    • 2. 后端Django
    • 3. 前端微信小程序
      • 1)小程序全局配置文件
      • 2)推荐电影页面
      • 3)个人信息界面以及用户登录记录页面
  • 系统测试
    • 1. 模型损失曲线
    • 2. 测试效果
  • 相关其它博客
  • 工程源代码下载
  • 其它资料下载


在这里插入图片描述

前言

本项目专注于MovieLens数据集,并采用TensorFlow中的2D文本卷积网络模型。它结合了协同过滤算法来计算电影之间的余弦相似度,并通过用户的交互方式,以单击电影的方式,提供两种不同的电影推荐方式。

首先,项目使用MovieLens数据集,这个数据集包含了大量用户对电影的评分和评论。这些数据用于训练协同过滤算法,以便推荐与用户喜好相似的电影。

其次,项目使用TensorFlow中的2D文本卷积网络模型,这个模型可以处理电影的文本描述信息。模型通过学习电影的文本特征,能够更好地理解电影的内容和风格。

当用户与小程序进行交互时,有两种不同的电影推荐方式:

  1. 协同过滤推荐:基于用户的历史评分和协同过滤算法,系统会推荐与用户喜好相似的电影。这是一种传统的推荐方式,通过分析用户和其他用户的行为来推荐电影。

  2. 文本卷积网络推荐:用户可以通过点击电影或输入文本描述,以启动文本卷积网络模型。模型会分析电影的文本信息,并推荐与输入的电影或描述相匹配的其他电影。这种方式更注重电影的内容和情节相似性。

综合来看,本项目融合了协同过滤和深度学习技术,为用户提供了两种不同但有效的电影推荐方式。这可以提高用户体验,使他们更容易找到符合他们口味的电影。

总体设计

本部分包括系统整体结构图和系统流程图。

系统整体结构图

系统整体结构如图所示。
在这里插入图片描述

系统流程图

系统流程如图所示。

在这里插入图片描述

模型训练流程如图所示。

在这里插入图片描述

服务器运行流程如图所示。

在这里插入图片描述

运行环境

本部分包括Python环境、TensorFlow环境、 后端服务器、Django和微信小程序环境。

模块实现

本项目包括3个模块:模型训练、后端Django、 前端微信小程序模块,下面分别给出各模块的功能介绍及相关代码。

1. 模型训练

下载数据集,解压到项目目录下的./ml-1m文件夹下。数据集分用户数据users.dat、电影数据movies.dat和评分数据ratings.dat。

1)数据集分析

数据集网站地址为http://files.grouplens.org/datasets/movielens/ml-1m-README.txt对数据的描述。

相关博客:https://blog.csdn.net/qq_31136513/article/details/133124641#1_44

2)数据预处理

通过研究数据集中的字段类型,发现有一些是类别字段,将其转成独热编码,但是UserID、MovieID的字段会变稀疏,输入数据的维度急剧膨胀,所以在预处理数据时将这些字段转成数字。

相关博客:https://blog.csdn.net/qq_31136513/article/details/133124641#2_123

3)模型创建

相关博客:https://blog.csdn.net/qq_31136513/article/details/133125845#3_50

4)模型训练

相关博客:https://blog.csdn.net/qq_31136513/article/details/133130704#4_57

5)获取特征矩阵

本部分包括定义函数张量、生成电影特征矩阵、生成用户特征矩阵。

相关博客:https://blog.csdn.net/qq_31136513/article/details/133130704#5_240

2. 后端Django

该模块实现了推荐算法的封装与前端数据交互功能。

相关博客:https://blog.csdn.net/qq_31136513/article/details/133131103#2_Django_67

3. 前端微信小程序

该模块实现用户交互以及与后端数据的传输功能,通过微信开发者平台进行前端开发。

1)小程序全局配置文件

全局配置文件通常以APP开头,包括app.jsapp.jsonapp.wxss等, 这些文件在新建小程序时,由微信开发者平台自动生成。

相关博客:https://blog.csdn.net/qq_31136513/article/details/133146411#1_75

2)推荐电影页面

推荐电影页面movies,包含movies.jsmovies.jsonmovies.wxmlmovies.wxss。其中movies.js记录的是逻辑层; movies.wxml记录的是视图层; movies.wxss记录页面元素的样式表;movies.json 类似于app.json,记录这个页面的相关配置信息。

相关博客:https://blog.csdn.net/qq_31136513/article/details/133146411#2_177

3)个人信息界面以及用户登录记录页面

这两个页面是新建小程序时系统自动生成的,不做改动。以下个人信息页面由index.jsindex.htmlindex.jsonindex.wxss等文件构成。

相关博客:https://blog.csdn.net/qq_31136513/article/details/133146411#3_383

系统测试

本部分包括模型损失曲线及测试效果。

1. 模型损失曲线

模型使用真实评分与预测评分的MSE作为损失函数,随着迭代次数的增多,在训练数据、测试数据上的损失逐渐降低,最终趋于稳定,经过5次迭代后,损失稳定为1。

训练损失如图所示。

在这里插入图片描述

测试损失如图所示。

在这里插入图片描述

2. 测试效果

前端小程序开发完成后,在微信开发者平台中进行预览,操作界面如图所示。

在这里插入图片描述

Movies页面中有两种推荐方式选择按钮,下面还有5部随机显示的电影信息。选择其中一种方式进行电影推荐,也就是“同类型电影”的推荐方式,再选择其中一部电影,例如,选择当前屏幕中的第一部电影Last Night,可以看到推荐了很多同类型的电影,如图所示。
在这里插入图片描述

选择另一种方式,即“看过这个的还喜欢看”的推荐方式,继续选择第一部电影,出现其他电影,如图所示。
在这里插入图片描述

相关其它博客

基于TensorFlow+CNN+协同过滤算法的智能电影推荐系统——深度学习算法应用(含微信小程序、ipynb工程源码)+MovieLens数据集(一)

基于TensorFlow+CNN+协同过滤算法的智能电影推荐系统——深度学习算法应用(含微信小程序、ipynb工程源码)+MovieLens数据集(二)

基于TensorFlow+CNN+协同过滤算法的智能电影推荐系统——深度学习算法应用(含微信小程序、ipynb工程源码)+MovieLens数据集(三)

基于TensorFlow+CNN+协同过滤算法的智能电影推荐系统——深度学习算法应用(含微信小程序、ipynb工程源码)+MovieLens数据集(四)

基于TensorFlow+CNN+协同过滤算法的智能电影推荐系统——深度学习算法应用(含微信小程序、ipynb工程源码)+MovieLens数据集(五)

基于TensorFlow+CNN+协同过滤算法的智能电影推荐系统——深度学习算法应用(含微信小程序、ipynb工程源码)+MovieLens数据集(六)

工程源代码下载

详见本人博客资源下载页


其它资料下载

如果大家想继续了解人工智能相关学习路线和知识体系,欢迎大家翻阅我的另外一篇博客《重磅 | 完备的人工智能AI 学习——基础知识学习路线,所有资料免关注免套路直接网盘下载》
这篇博客参考了Github知名开源平台,AI技术平台以及相关领域专家:Datawhale,ApacheCN,AI有道和黄海广博士等约有近100G相关资料,希望能帮助到所有小伙伴们。

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

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

相关文章

时序预测 | MATLAB实现POA-CNN-LSTM鹈鹕算法优化卷积长短期记忆神经网络时间序列预测

时序预测 | MATLAB实现POA-CNN-LSTM鹈鹕算法优化卷积长短期记忆神经网络时间序列预测 目录 时序预测 | MATLAB实现POA-CNN-LSTM鹈鹕算法优化卷积长短期记忆神经网络时间序列预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 MATLAB实现POA-CNN-LSTM鹈鹕算法优化卷积长短…

C语言每日一题(1):实现库函数strlen()

文章主题:库函数strlen()的实现所属专栏:C语言每日一题作者简介:每天不定时更新C语言的小白一枚,记录分享自己每日的所思所想。个人主页:[₽]的个人主页 目录 前言 函数介绍 编程起因 设计思路 1.整体逻辑 2.参…

Postman 的使用教程(详细)

Postman 使用教程 1. 是什么 Postman 是一个接口测试工具软件,可以帮助开发人员管理测试接口。 官网:https://www.getpostman.com/ 2. 安装 建议通过官网下载安装,不要去那些乱七八糟的下载平台,或者留言获取 官网下载地址&am…

【unity】关于技能释放shader.CreateGPUProgram造成卡顿,优化和定位方法。

关于优化方法,UWA这边有介绍 Unity移动端游戏性能优化简谱之 CPU耗时调优|单帧|动画|调用|unity|实例化_网易订阅 对此,我们可以将Shader通过ShaderVariantCollection收集要用到的变体并进行AssetBundle打包。在将该ShaderVariantCollection资源加载进内…

30.CSS文本悬停过渡效果

效果 源码 index.html <!doctype html> <html> <head><meta charset="utf-8"><title>CSS Focus Text Hover Effects</title><link rel="stylesheet" href="style.css"> </head> <body>…

自动化发布npm包小记

1.注册npm账号 打开npm官网&#xff0c;并注册自己的npm账号 2.申请AccessToken 1.登录npm官网&#xff0c;登录成功后&#xff0c;点开右上角头像&#xff0c;并点击Access Tokens选项 2.点开Generate New Token下拉框&#xff0c;点击Classic Token(和Granular Access To…

ChatGPT WPS AI 一键制作各类汇报型PPT演示文档

在WPS AI中生成一个PPT文档。 操作步骤如下 :

Vue中使用VueAMap

npm 安装 npm install vue-amap --save注册:高德地图 // 在main.js中注册:高德地图 import VueAMap from "vue-amap"; Vue.use(VueAMap); VueAMap.initAMapApiLoader({key: "你的高德key",plugin: ["AMap.AutoComplete", //输入提示插件"A…

Android12之Codec2.0配置编解码器为H264实现(四十五)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药. 更多原创,欢迎关注:Android…

NSS [NISACTF 2022]middlerce

NSS [NISACTF 2022]middlerce 开题&#xff0c;直接给了源码。 由语句$command json_decode($txw4ever,true)[cmd];可得&#xff0c;$txw4ever一定是json格式的数据&#xff0c;但是&#xff0c;preg_match()函数却过滤了{&#xff0c;同时.*贪婪匹配后又匹配括号里的字符&am…

讯飞星火认知大模型Java后端接口

文章目录 1.免费申请星火大模型套餐2.Java后端接口说明2.1 项目地址2.2 项目说明2.3 项目结构2.4 项目代码&#x1f340; maven 依赖&#x1f340; application.yml 配置文件&#x1f340; config 包&#x1f4cc; XfXhConfig &#x1f340; dto 包&#x1f4cc; MsgDTO&#x…

【漏洞复现】五、seacms 远程命令执行(CNVD-2020-22721)

五、seacms 远程命令执行 &#xff08;CNVD-2020-22721&#xff09; 5.1、漏洞原理 在w1aqhp/admin_ip.php下第五行使用set参数&#xff0c;对用户输入没有进行任何处理&#xff0c;直接写入文件。攻击者可利用该漏洞执行恶意代码&#xff0c;获取服务器权限 5.2、影响版本 …

flink集群与资源@k8s源码分析-回顾

本章是分析系列最后一章,作为回顾,以运行架构图串联起所有分析场景 1 启动集群,部署集群(提交k8s),新建作业管理器组件 2 构建和启动flink master组件 3 提交作业,N/A

百度APP iOS端包体积50M优化实践(六)无用方法清理

一、前言 百度APP包体积经过一期优化&#xff0c;如无用资源清理&#xff0c;无用类下线&#xff0c;Xcode编译相关优化&#xff0c;体积已经有了明显的减少。但是优化后APP包体积在iPhone11上仍有350M的空间占用。与此同时百度APP作为百度的旗舰APP&#xff0c;业务迭代非常多…

PlotNeuralNet resnet34和resnet18绘图

文章目录 resnet18resnet34 PlotNeuralNet网络 可以发现&#xff0c;resnet34和resnet18只有块的数量不一样&#xff0c;经过简单的修改即可得到 resnet18 \documentclass[border12pt, multi, tikz]{standalone} \usepackage[fontsize14pt]{fontsize} \usepackage{import} \su…

Spark 【分区与并行度】

RDD 并行度和分区 SparkConf setMaster("local[*]") 我们在创建 SparkContext 对象时通常会指定 SparkConf 参数&#xff0c;它包含了我们运行时的配置信息。如果我们的 setMaster 中的参数是 "local[*]" 时&#xff0c;通常代表使用的CPU核数为当前环境…

DevOps与CI/CD常见面试问题汇总

01 您能告诉我们DevOps和Agile(敏捷)之间的根本区别吗&#xff1f; 答&#xff1a;尽管DevOps与敏捷方法&#xff08;这是最流行的SDLC[Software Development Life Cycle]方法之一&#xff09;有一些相似之处&#xff0c;但两者在软件开发方面都是根本不同的方法。以下是两者之…

mysql 在eclipse在配置

一、在Windows&#xff08;窗口&#xff09;/Preferences&#xff08;首选项&#xff09;/Java/Build path&#xff08;构建路径&#xff09;/User Library&#xff08;用户库&#xff09;里面直接把建一个Mysql&#xff0c; 二、Add External JARs… 添加mysql-connector-java…

python学习之【with语句】

前言 上一篇文章 ​ ​python学习之【文件读写】​​​ 中我们学习了python当中的文件读写&#xff0c;这篇文章接着学习python中文件读写的with语句。 了解with语句 在很多场景中&#xff0c;通过使用with语句可以让我们可以更好地来管理资源和简化代码&#xff0c;它可以看…

洛谷刷题入门篇:顺序结构

链接如下&#xff1a;https://www.luogu.com.cn/training/100#problems 一、Hello,World! 题目链接&#xff1a;https://www.luogu.com.cn/problem/B2002 题目描述 编写一个能够输出 Hello,World! 的程序。 提示&#xff1a; 使用英文标点符号&#xff1b;Hello,World! 逗…