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

news2025/1/12 18:12:49

目录

  • 前言
  • 总体设计
    • 系统整体结构图
    • 系统流程图
  • 运行环境
    • Python环境
    • TensorFlow环境
      • 方法一
      • 方法二
    • 后端服务器
    • Django环境配置
    • 微信小程序环境
  • 相关其它博客
  • 工程源代码下载
  • 其它资料下载


在这里插入图片描述

前言

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

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

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

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

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

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

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

总体设计

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

系统整体结构图

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

系统流程图

系统流程如图所示。

在这里插入图片描述

模型训练流程如图所示。

在这里插入图片描述

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

在这里插入图片描述

运行环境

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

Python环境

需要Python 3.6及以上配置,在Windows环境下推荐下载Anaconda完成Python所需环境的配置,下载地址为https://www.anaconda.com/,也可下载虚拟机在Linux环境下运行代码。

TensorFlow环境

安装方法如下:

方法一

打开Anaconda Prompt,输入清华仓库镜像。

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config -set show_channel_urls yes

创建Python 3.6的环境,名称为TensorFlow,此时Python版本和后面TensorFlow的版本有匹配问题,此步选择Python 3.x。

conda create -n tensorflow python=3.6

有需要确认的地方,都输入y。在Anaconda Prompt中激活TensorFlow环境:

conda activate tensorflow

安装CPU版本的TensorFlow:

pip install -upgrade --ignore -installed tensorflow

测试代码如下:

import tensorflow as tf
hello = tf.constant( 'Hello, TensorFlow! ')
sess = tf.Session()
print sess.run(hello)
# 输出 b'Hello! TensorFlow'

安装完毕。

方法二

打开Anaconda Navigator,进入Environments 单击Create,在弹出的对话框中输入TensorFlow,选择合适的Python版本,创建好TensorFlow环境,然后进入TensorFlow环境,单击Not installed在搜索框内寻找需要用到的包。例如,TensorFlow,在右下方选择apply,测试是否安装成功。在Jupyter Notebook编辑器中输入以下代码:

import tensorflow as tf
hello = tf.constant( 'Hello, TensorFlow! ')
sess = tf.Session()
print sess.run(hello)
# 输出 b'Hello! TensorFlow'

能够输出hello TensorFlow,说明安装成功。

后端服务器

使用阿里云服务器,镜像为centos_7_05_64_20G_alibase_20181210.vhd。在服务器LNMP上一键安装包1.6版本(https://lnmp.org/notice/lnmp-v1-6.html),包含Nginx、MySQL、PHP在内的一系列所需软件。通过Xshell远程登录到服务器后,输入命令安装LNMP:

wget http://soft.vpser.net/lnmp/lnmp1.6.tar.gz -c0 lnmp1.6.tar.gz && tar zxf lnmp1.6.tar.gz && cd lnmp1.6 && ./install.sh lnmp

完成安装后使用阿里云购买域名并且实名认证、备案等,这些操作可以通过域名访问服务器。
修改Nginx配置文件/ust/local/nginx/conf/nginx.conf:

events {
		worker_connections 1024; #默认1024
		}
http{
	#以下属性中以ssl开头的代表与证书配置有关,其他属性根据自己的需要进行配置
server {
	listen 443 ssl; # SSL协议访问端口号为443.未添加ssl,会造成Nginx无法启动
	server_name localhost; #localhost为证书绑定的域名,例如: www.example.com
	ssl_certificate cert/domain name.pem; #将domain name.pem替换成证书的文件名
	ssl_certificate_key cert/domain name.key; #将domain name.key替换成证书的密钥文件名
	ssl_session_timeout 5m;
	ssl_ciphers ECDHE -RSA -AES128 -GCM -SHA256: ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:! RC4;  #使用此加密套件
	ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #使用该协议进行配置
	ssl_prefer_server_ciphers on;
	location/ {
				include uwsgi_params;
				uwsgi_pass 127.0.0.1:8000;
	}
}
}

修改注释,重启Nginx服务。在阿里云上开通免费版个人SSL证书,下载证书后通过Xftp上传至服务器,在服务器上使用Nginx部署。安装Miniconda,通过清华镜像源下载安装文件:

wget -C https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-latest-Linux-x86_64.sh

安装:

bash Miniconda3-latest-Linux-x86_64.sh

按照提示输入ENTER或者yes即可。安装完成后移动当前目录下的miniconda3至/usr/sbin/目录下,输入命令:

mv ./miniconda3 /usr/sbin/

修改对应的环境变量后,输入命令:

source .bashrc

使用conda管理环境。通过命令创建一个新的环境,输入命令后按照提示输入y即可创建成功。

conda create -n py36 python=3.6

Django环境配置

安装virtualenv,用于管理Django项目环境:

pip install virtualenv

新建目录名称recommender,使用virtualenv创建Django项目环境,版本为miniconda的Python 3.6:

virtualenv -p /usr/sbin/miniconda3/envs/py36/bin/python3.6 env

在当前目录下出现.env文件夹,使用命令,进入项目环境。

source activate ./env/bin/ activate

进入环境后安装所需的包:

pip install django==2.2 numpy pandas uwsgi

按照提示安装和项目环境配置,使用Django命令创建项目:

django-admin startproject mysite

命令执行完成后文件夹下会出现mysite,里面包含相关文件。

进入mysite目录下,使用manage.py创建应用:

python manage.py startapp contest

至此,Django环境配置完成。

微信小程序环境

根据所需的操作系统版本下载微信开发者工具,下载地址为:https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html,安装微信开发者工具,下载安装包后,单击“下一步”按钮即可。申请小程序管理员账号,获取开发者APPID。申请账号:可参考https://mp.weixin.qq.com/wxopen/waregister?action=step1。具体可以参考下图。

在这里插入图片描述

获取APPID:小程序管理平台→开发→开发设置→开发者ID。该APPID将在微信开发者工具打开小程序时进行身份验证。

通过已授权的微信扫描登录开发者工具。新建项目,填写APPID,编写前端代码,后期使用微信开发者工具预览和调试小程序,如图所示。

在这里插入图片描述

项目开发时,为了能够在暂时无域名的情况下调试微信小程序与远程服务器的通信,可以在微信开发者工具的详情本地设置页面,勾选不检验合法域名、web-view (业务域名)、TLS版本以及HTTPS证书’选项,服务器域名配置后,在微信公众平台上(https://mp.weixin.qq.com/)登录创建好的小程序账户,项目开发设置页面下的服务器域名中加入在阿里云购买的域名,再去除勾选微信开发者工具中的选项即可。

相关其它博客

基于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/1030220.html

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

相关文章

软件设计师笔记系列(三)

😀前言 随着计算机技术的日益发展,操作系统作为计算机系统的核心组件,其重要性不言而喻。操作系统不仅管理和控制计算机硬件和软件资源,还为用户和其他软件提供服务,使得复杂的计算机系统能够高效、安全和方便地运行。…

网络监控应用程序

在过去的几十年中,网络监控应用稳步发展,以适应不断变化的市场需求和期望。多年来,停机成本飙升,客户对停机的耐心比以往任何时候都低,不仅仅是正常运行时间,正常运行时间的质量也变得很重要。 另一个发展…

使用QLoRA对Llama 2进行微调的详细笔记

使用QLoRA对Llama 2进行微调是我们常用的一个方法,但是在微调时会遇到各种各样的问题,所以在本文中,将尝试以详细注释的方式给出一些常见问题的答案。这些问题是特定于代码的,大多数注释都是针对所涉及的开源库以及所使用的方法和…

Vue之vue-cli搭建SPA项目

目录 ​编辑 前言 一、vue-cli简介 1. 什么是vue-cli 2. vue-cli的重要性 3. vue-cli的应用场景 二、Vue-cli搭建SPA项目 1. 构建前提(node.js安装完成) 2. 安装vue-cli 3. 使用脚手架vue-cli(2.X版)来构建项目 4. 分析创建spa项目的八个问题 …

康耐视Visionpro-单ToolBlock工具规范与脚本测量规范案例分享

目录 项目要求:测试红框内的宽度显示效果第一步:建立变量第二步:建立命名空间第三步:初始化和关联工具第四步:业务逻辑和标签建立第五步:图层添加标签全部代码项目要求:测试红框内的宽度 显示效果 使用工具输入输出变量解析: 变量分析:变量Select1强制此ToolBLock输出…

2022年贵州省职业院校技能大赛中职组网络安全赛项规程

2022年贵州省职业院校技能大赛中职组 网络安全赛项规程 一、赛项名称 赛项名称:网络安全 赛项归属: 信息技术类 二、竞赛目的 为检验中职学校网络信息安全人才培养成效,促进网络信息安全专业教学改革,培养大批既满足国家网络…

Ubuntu上通过源码方式安装Redis

上一篇文章Ubuntu上安装、使用Redis的详细教程已经介绍了再Ubuntu操作系统上安装Redis的详细过程,但是因为安装的Redis只有最主要的配置文件和redis-server,为了更深入地学习Redis和进行更复杂的操作,需要安装一个完整的Redis服务。 这篇文章…

【Windows Server 2012 R2搭建FTP站点】

打开服务器管理器——添加角色和功能 下一步 下一步 下一步 选择FTP服务器,勾上FTP服务和FTP扩展,点击下一步 安装 安装完成关闭 打开我们的IIS服务器 在WIN-XXX主页可以看到我们的FTP相关菜单 右键WIN-XXXX主页,添加FTP站点 输入站点名称-FT…

Redis实现Session持久化

Redis实现Session持久化 1. 前言 直接使用Session存储用户登录信息,此时的会话信息是存储在内中的,只要项目重启存储的Session信息就会丢失。而使用Redis存储Session的话就不会存在这种情况,即使项目重启也并不影响,也无需用户重…

新款 锐科达 SV-2102VP SIP广播音频模块 RTP流音频广播

新款 锐科达 SV-2102VP SIP广播音频模块 RTP流音频广播 SV-2102VP和 SV-2103VP网络音频模块是一款通用的独立SIP音频功能模块,可以轻松地嵌入到OEM产品中。该模块对来自网络的SIP协议及RTP音频流进行编解码。 本系列模块可以应用于以下领域: • 各种商…

在Vue中实现组件间的通信(父子通信,非父子通信,通用通信)

在vue中实现组件间的通信 文章目录 在vue中实现组件间的通信1、组件通信1.1、不同的组件关系和组件通信方案分类1.2、组件通信的解决方案1.3、非父子通信- event bus事件总线 2、prop2.1、prop详解2.2、prop校验2.3、prop & data、单向数据流 3、v-mdoel原理 1、组件通信 …

Fink--3、Flink运行时架构(并行度、算子链、任务槽、作业提交流程)

1、系统架构(以Standalone会话模式为例) 1、作业管理器(JobManager) JobManager是一个Flink集群中任务管理和调度的核心,是控制应用执行的主进程。也就是说,每个应用都应该被唯一的JobManager所控制执行。 …

隧道爬虫IP工作原理及应用场景解析

隧道爬虫IP作为一种网络爬虫IP技术,可在网络通信中实现隐私保护和数据安全传输。本文将深入探讨隧道爬虫IP的工作原理,并介绍其在不同应用场景下的具体应用。无论你是网络爱好者还是技术专业人士,相信这篇文章都能为你带来一些新的见解和启发…

网络编程套接字 | TCP套接字

前面的文章中我们使用UDP套接字编写了四个版本,不同的UDP服务器,在本文中我们将要对TCP套接字进行几个不同的版本的代码的编写,首先测试一下TCP套接字的代码,然后是将这个版本进行修改成多进程版本的,再将代码修改成多…

R语言RSTAN MCMC:NUTS采样算法用LASSO 构建贝叶斯线性回归模型分析职业声望数据...

全文链接:http://tecdat.cn/?p24456 如果你正在进行统计分析:想要加一些先验信息,最终你想要的是预测。所以你决定使用贝叶斯(点击文末“阅读原文”获取完整代码数据)。 相关视频 但是,你没有共轭先验。你…

【算法训练-二叉树 五】【最近公共祖先】二叉树的最近公共祖先

废话不多说,喊一句号子鼓励自己:程序员永不失业,程序员走向架构!本篇Blog的主题是【二叉树的节点查找】,使用【二叉树】这个基本的数据结构来实现,这个高频题的站点是:CodeTop,筛选条…

基于微信小程序的高校就业招聘系统设计与实现(源码+lw+部署文档+讲解等)

前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌💗 👇🏻…

悬崖边:企业如何应对网络安全漏洞趋势

在本文中,我们将讨论企业在处理漏洞时面临的挑战,解释安全漏洞是如何引发网络攻击的,以及为什么它会导致不可接受的事件。我们还将分享我们在识别趋势性漏洞方面的经验。 现代信息安全方法正在成为企业的工作流程。例如,不久前&a…

Visio 无边框保存png和pdf文件

1 无边框保存为png 1 点击【开发工具】- 【显示ShapeSheet】- 【页】 选择【Print Properties】 更改【PageLeftMargin、PageRightMargin、PageTopMargin、PageBottomMargin】的数值,如果改成0,那么就完全没有空白。更改数值后一定要回车! …

Uni-app 调用微信地图导航功能【有图】

前言 我们在使用uni-app时&#xff0c;有时候会遇到需要开发地图和导航的功能&#xff0c;这些方法其实微信小程序的API已经帮我们封装好了 详见&#xff1a;微信小程序开发文档 接下来我们就演示如何用uni-app来使用他们 使用 <template><view><button type…