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

目录


前言

本项目专注于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,输入清华仓库镜像。

bash 复制代码
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。

bash 复制代码
conda create -n tensorflow python=3.6

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

bash 复制代码
conda activate tensorflow

安装CPU版本的TensorFlow:

bash 复制代码
pip install -upgrade --ignore -installed tensorflow

测试代码如下:

python 复制代码
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编辑器中输入以下代码:

python 复制代码
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:

bash 复制代码
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:

json 复制代码
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,通过清华镜像源下载安装文件:

bash 复制代码
wget -C https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-latest-Linux-x86_64.sh

安装:

bash 复制代码
bash Miniconda3-latest-Linux-x86_64.sh

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

bash 复制代码
mv ./miniconda3 /usr/sbin/

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

bash 复制代码
source .bashrc

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

bash 复制代码
conda create -n py36 python=3.6

Django环境配置

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

bash 复制代码
pip install virtualenv

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

bash 复制代码
virtualenv -p /usr/sbin/miniconda3/envs/py36/bin/python3.6 env

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

bash 复制代码
source activate ./env/bin/ activate

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

bash 复制代码
pip install django==2.2 numpy pandas uwsgi

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

bash 复制代码
django-admin startproject mysite

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

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

bash 复制代码
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相关资料,希望能帮助到所有小伙伴们。

相关推荐
余生H27 分钟前
transformer.js(三):底层架构及性能优化指南
javascript·深度学习·架构·transformer
果冻人工智能1 小时前
2025 年将颠覆商业的 8 大 AI 应用场景
人工智能·ai员工
代码不行的搬运工1 小时前
神经网络12-Time-Series Transformer (TST)模型
人工智能·神经网络·transformer
石小石Orz1 小时前
Three.js + AI:AI 算法生成 3D 萤火虫飞舞效果~
javascript·人工智能·算法
罗小罗同学1 小时前
医工交叉入门书籍分享:Transformer模型在机器学习领域的应用|个人观点·24-11-22
深度学习·机器学习·transformer
孤独且没人爱的纸鹤1 小时前
【深度学习】:从人工神经网络的基础原理到循环神经网络的先进技术,跨越智能算法的关键发展阶段及其未来趋势,探索技术进步与应用挑战
人工智能·python·深度学习·机器学习·ai
阿_旭1 小时前
TensorFlow构建CNN卷积神经网络模型的基本步骤:数据处理、模型构建、模型训练
人工智能·深度学习·cnn·tensorflow
羊小猪~~1 小时前
tensorflow案例7--数据增强与测试集, 训练集, 验证集的构建
人工智能·python·深度学习·机器学习·cnn·tensorflow·neo4j
Sxiaocai1 小时前
使用TensorFlow实现简化版 GoogLeNet 模型进行 MNIST 图像分类
分类·tensorflow·neo4j
只怕自己不够好1 小时前
RNN与LSTM,通过Tensorflow在手写体识别上实战
rnn·tensorflow·lstm