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

2023-09-21 20:35:25


在这里插入图片描述

前言

本项目专注于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相关资料,希望能帮助到所有小伙伴们。

更多推荐

Docker学习大纲

Docker是一个用于自动部署应用程序在轻量级容器中的平台。下面列出一些Docker的基础和必知概念。1.容器(Containers)容器是独立的应用程序运行环境。命令:dockerrunhello-world解析:该命令会从DockerHub下载一个叫做“hello-world”的镜像,并运行一个容器。2.镜像(Im

模型分类model

模型可以按照多个维度进行分类,以下是常见的几种模型分类方式:(1)根据应用领域分类:数学模型:基于数学原理和方程式来描述和解决问题,如微积分模型、线性代数模型等。物理模型:基于物理原理和规律来模拟和解释现象,如力学模型、电路模型等。经济模型:用于研究和预测经济系统的行为和变化,如供求模型、消费者行为模型等。生物模型:用

token登录的实现

token登录的实现我这种token只是简单的实现token,就是后端利用UUID生成简单随机码,利用随机码作为在Redis中的键,然后存储的用户信息作为值,在每次合理请求的时候对token的有效时间进行刷新(利用拦截器),以确保用户信息的有效性。为什么要用token使用令牌(Token)进行身份验证和授权是一种常见的

Python vs C#:首先学习哪种编程语言最好?

进入编码可能很困难。最艰难的部分?决定先学什么语言。当谈到Python与C#时,可能很难知道在您的决定中要考虑哪些因素。我们为您提供了有关这些全明星编程语言的所有信息。什么是C#?自2000年作为MicrosoftVisualStudio的一部分开发C#以来,它一直是开发人员(包括新编码人员)的最爱。它标志着技术的一个

JAVA设计模式6:代理模式,用于控制对目标对象的访问

作者主页:Designer小郑作者简介:3年JAVA全栈开发经验,专注JAVA技术、系统定制、远程指导,致力于企业数字化转型,CSDN博客专家,阿里云社区专家博主,蓝桥云课讲师。目录一、什么是代理模式二、代理模式实例2.1静态代理2.2动态代理三、代理模式的应用场景四、代理模式面试题一、什么是代理模式代理模式是一种常用

【算法训练-二叉树 四】【对称与翻转】对称二叉树、翻转二叉树

废话不多说,喊一句号子鼓励自己:程序员永不失业,程序员走向架构!本篇Blog的主题是【二叉树的形态变化】,使用【二叉树】这个基本的数据结构来实现,这个高频题的站点是:CodeTop,筛选条件为:目标公司+最近一年+出现频率排序,由高到低的去牛客TOP101去找,只有两个地方都出现过才做这道题(CodeTop本身汇聚了L

OPCAE扫盲

目录1基本概念1.1服务器/客户端1.2区域1.3报警/条件1.4事件2条件概念2.1子条件2.2OPCConditions属性2.3Condition质量2.4OPCSubConditions属性2.5Condition定义2.6严重性2.7Condition启用/禁用2.8Area启用/禁用2.9Condition

服务器托管费用包含什么?

服务器托管和服务器租用是有一定区别的,那么服务器托管多少钱一年呢?今天就让小编来讲一讲服务器托管费用包含什么吧?服务器的机柜费。因为是服务器托管,所以不需要IDC服务器商提供服务器,只需要给自己的服务器付租用机柜的费用。通常是1U、2U、4U、半柜、整柜几种租用尺寸。(注:1U=4.445厘米,2U=8.89厘米,以此

Aztec交易架构解析

1.引言前序博客有:Aztec的隐私抽象:在尊重EVM合约开发习惯的情况下实现智能合约隐私完全保密的以太坊交易:Aztec网络的隐私架构Aztec.nr:Aztec的隐私智能合约框架——用Noir扩展智能合约功能AccountAbstraction账号抽象——EIP-4337提案Aztec团队认为:隐私用户体验糟透了。

深入解读什么是期权的内在价值和时间价值?

期权品种越来越丰富,对于大家套利对冲都有很多的选择。而有些初学者对时间价值一直不理解,今天呢,就给大家讲一讲深入解读什么是期权的内在价值和时间价值?本文来自:期权酱01在期权交易过程中,想必大家都会有以下几点疑惑:❑我看对行情了,为什么行情上涨或者下跌。认沽和认购都不赚钱?❑什么是期权的内在价值和时间价值?❑一旦被套,

HTTP网络协议与接口测试逻辑

很多测试人员都做过接口测试,但是聊到接口还是会不太清楚。网络协议:但凡要做接口测试,一定要懂网络协议。目前市场主流的网络协议HTTP1.1,Dubbo2,HTTP2.O(相对较少)HTTP1.1网络协议:搞懂打开浏览器访问一个URL会经历的步骤有哪些?(也就是搞懂了HTTP网络协议的基本交互流程)解析URL,将域名解析

热文推荐