基于卷积神经网络的电影推荐系统

article/2025/3/18 0:01:09

基于卷积神经网络的电影推荐系统

  • 前言
  • 1.实现效果
    • 1.1 算法运行结果
    • 1.2 系统主要界面
  • 2.主要代码实现
    • 2.1 网络模型代码
    • 2.2 django代码

前言

如今协同过滤等传统推荐算法被广泛用于推荐,但也存在冷启动、矩阵稀疏等问题,本项目用深度学习来实现电影推荐,核心算法主要参考了https://blog.csdn.net/chengcheng1394/article/details/78820529,基于tensorflow和卷积神级网络来实现个性化电影推荐。web端用django来进行开发。

1.实现效果

1.1 算法运行结果

(1)输入电影,推荐相似的电影以及看过的人还喜欢的电影
在这里插入图片描述

在这里插入图片描述

(2)输入用户信息,推荐其喜爱的电影
在这里插入图片描述

1.2 系统主要界面

  • 登录模块

在这里插入图片描述

  • 电影推荐模块

在这里插入图片描述

在这里插入图片描述

2.主要代码实现

2.1 网络模型代码

网络模型代码这里就不放了,可以参考https://blog.csdn.net/chengcheng1394/article/details/78820529

2.2 django代码

以下是django的一些主要代码:

  • urls.py配置路由

在这里插入图片描述

  • settings.py配置数据库

在这里插入图片描述

  • 登录模块
def login(request):if request.method == 'GET':return render(request, 'login.html')else:#用户POST提交的数据u = request.POST.get('user')p = request.POST.get('pwd')#把账号密码写死了# if u == 'cxx' and p == '123':#     #登录成功#     return redirect('/mess/')#从数据库中判断账号密码是否正确if u and p:c = User.objects.filter(username=u,password=p).count()if c >= 1:#获取当前登录的用户idcur_id = User.objects.get(username=u, password=p).idreturn redirect('/mess/?user_id='+str(cur_id))else:return render(request, 'login.html', {'msg': '账号密码错误'})else:#登录失败return render(request, 'login.html', {'msg': '请输入正确的账号密码'})
  • 推荐喜欢的电影
def like(request):user_id = request.GET.get('user_id')#获取当前用户my_user = models.User.objects.get(id=user_id)global global_modelmodel = global_modelprint('-------正在推荐--------', user_id)list_like_movies_names, list_like_movies_ids = model.recommend_your_movie(int(user_id))print('你喜欢的电影:', list_like_movies_names)print('你喜欢的电影id:', list_like_movies_ids)# 你喜欢的电影list_dict_like = []for i in list_like_movies_names[:6]:list_dict_like.append(utils.movie_dic(i))for i in range(len(list_dict_like)):# list_dict_like[i]['movie_id'] = list_like_movies_ids[i]list_dict_like[i]['movie_id'] = int(list_like_movies_ids[i])    #把字典中的id转int类型,便于前端if判断print('相似电影列表:', list_dict_like)context = {}context['list_dict_like'] = list_dict_likecontext['my_user'] = my_user    #返回当前用户,在前端页面显示当前登陆的用户名return render(request, 'like.html', context)
  • 推荐同类型的电影和看过的人喜欢的电影
def index(request):#获取电影idmovie_id = request.GET.get('movie_id')global global_modelmodel = global_modelprint('-------正在推荐--------', movie_id)#choice_movie_name 选择的电影名称#list_same_movies_names 相似的电影名称#list_pepole_like_movies_names 喜欢这个电影的人还喜欢的电影名称#list_same_movies_ids 相似的电影id#list_pepole_like_movies_ids 喜欢这个电影的人还喜欢的电影id#和recommend_by_movie方法的返回值一一对应choice_movie_name, list_same_movies_names, list_pepole_like_movies_names, list_same_movies_ids, list_pepole_like_movies_ids = model.recommend_by_movie(int(movie_id))print('选择电影:', choice_movie_name)print('相似的电影:', list_same_movies_names)print('喜欢这个电影的人还喜欢:', list_pepole_like_movies_names)print('相似的电影id:', list_same_movies_ids)print('喜欢这个电影的人还喜欢id:', list_pepole_like_movies_ids)#选择的电影list_dict_choice = []for i in choice_movie_name:list_dict_choice.append(utils.movie_dic(i))list_dict_choice[0]['movie_id'] = movie_idprint('选择电影列表:', list_dict_choice)# 相似的电影list_dict_same = []# for i in list_same_movies_names[:3]:    #最多显示3部电影for i in list_same_movies_names:list_dict_same.append(utils.movie_dic(i))for i in range(len(list_dict_same)):# list_dict_same[i]['movie_id'] = list_same_movies_ids[i]list_dict_same[i]['movie_id'] = int(list_same_movies_ids[i])    #把字典中的id转int类型,便于前端if判断print('相似电影列表:', list_dict_same)# 看过的用户还喜欢的电影list_dict_otherlike = []for i in list_pepole_like_movies_names:list_dict_otherlike.append(utils.movie_dic(i))for i in range(len(list_dict_otherlike)):# list_dict_otherlike[i]['movie_id'] = list_pepole_like_movies_ids[i]list_dict_otherlike[i]['movie_id'] = int(list_pepole_like_movies_ids[i])    #把字典中的id转int类型,便于前端if判断print('喜欢这个电影的人还喜欢列表:', list_dict_otherlike)context = {}context['list_dict_choice'] = list_dict_choicecontext['list_dict_same'] = list_dict_samecontext['list_dict_otherlike'] = list_dict_otherlikereturn render(request, 'index.html', context)

http://chatgpt.dhexx.cn/article/jWgwWD1C.shtml

相关文章

炸鸡网络验证系统

文章目录 前言一、炸鸡网络验证系统二、程序演示与下载1.程序演示2.程序下载 前言 今天介绍的是一款才了解到的系统,网络验证系统。具体介绍如下 一、炸鸡网络验证系统 炸鸡网络验证系统基于PhpMySql数据库架构的网络验证系统,安全稳定、性能强悍、承…

Linux系统的网络设置

前言 linux上设置网络需要设置 IP、子网掩码、网关、DNS等。设置正确才可访问网络,否则会出现无法联网的问题。下面会写出如何设置IP等信息,如何处理路由表等操作。 一. 查看网络配置 1.1 查看所有活动网接口的信息 执行ifconfig 命令 ens33&#…

1.网络安全之windows系统知识

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、Windows 常见分类二、Windows 常用操作1.Windows常用快捷键2.Windows常用控制台 三、Windows 网络配置1.IP地址2.子网掩码3.默认网关4.Windows Cmd 介绍及使…

python中split()方法的使用

split()方法是用来拆分字符串的,返回的数据类型是列表,当传入参数时,必须指定分割符。当不传递参数时,此时将整个字符串作为列表的一个元素返回。 使用方法: 1.空格作为分隔符 2.按点号.分割 当字符串中没有指定分割符时,会将整个字符串作为列表的一个元素返回。 3.包含…

java split 顺序_Java的split方法说明

相信大家都经常使用String 的split方法,但是大家有没有遇到下面的这种情况: 大家想想下面的代码执行结果是什么 public static voidmain(String[] args) {//TODO Auto-generated method stub String str1= "a,b,c,,,a"; String str2= "a,b,c,,,"; String…

String类中split()方法的使用

String类中split方法的使用 查看api会发现,split方法有方法重载 一个是split(String regex)一个是split(String regex,int limit) 先讲解split(String regex,int limit) …

Java split方法详细讲解

1. 问题描述 描述:在日常编写代码时,我们经常遇到需要将一串字符串中的数据进行分析摘取,从中获得分隔符外的数据,此时便不得不提split方法。 2. 方法介绍 分隔符可以是任意字符、符号、数字、字符串等。 2.1 split(String re…

split()方法的用法,超详细讲解

java 认识split()方法 在java中常常会有对字符串进行的操作, 而有时候我们想把一个字符串拆分成为多个字符串, 这个时候我们就用到了**split()**方法。本文就是解释split()方法的使用,将通过用法例子的形式带大家认识split()。 split()的使…

c语言计算闰年

1.普通闰年:能被4整除,不能被100整除。 2.世纪闰年:内部400整除。 一年的月份 8月前,单月为31,双月为30天 8月以及8月以后,单月为31天,双月为30天。 可以用 month&0x01来判断是单月还是双月…

C语言统计多个闰年,C语言统计闰年

源码如下&#xff1a; #include int main() { // 统计1-2020的闰年 printf("1-2020的闰年: \n\n"); int ye, c 0; for (ye 1; ye < 2020; ye) //此处也可更改为指定年份区间 { if (((ye % 4 0) && (ye % 100 ! 0)) || (ye % 400 0)) //闰年的定义&…

C语言闰年判断

闰年的条件&#xff1a;可以被4整除且不能被100整除或能被400整除的年份&#xff0c;通过函数实现&#xff0c; 例&#xff1a;输出从2100-2300年的所有闰年 #include<stdio.h> int isLeapYear(int year){if(year%4000)return 1;else{if(year%40&&year%100!0)r…

【C语言】输出闰年的三种方法

系列文章目录 C语言基础整体框架&#xff08;二&#xff09;http://t.csdn.cn/QyW6l C语言基础整体框架&#xff08;二&#xff09;http://t.csdn.cn/BqPr5 猜数字游戏--分支循环 http://t.csdn.cn/SNUTz 目录 系列文章目录 前言 问题描述&#xff1a; 一、分支循环法 …

用户登录注册流程图-所有项目论文通用计算机毕业设计

系统模块详细设计 (1) 用户注册 消费者必须注册才能购买商品&#xff0c;注册流程如图4.3所示。 (2) 用户登录 输入时&#xff0c;用户必须输入用户名和密码。系统确认用户输入的信息。如果用户的输入不正确&#xff0c;则用户需要知道登录失败原因。如果用户输入正确&#xff…

LaTex论文排版 | (18)算法流程图(伪代码)

之前自己尝试用visiomathtype画算法流程图&#xff0c;但是总是存在着各种各样的问题&#xff0c;今天才知道最好的算法流程图是用latex写出来的&#xff0c;在网上找到相关资源&#xff0c;先记录下来&#xff0c;然后照着实践一下看看效果。 转载自&#xff1a;http://blog.…

SCI图片制作排版全流程及论文配图规范

目录 引言 一、图片尺寸与格式要求 二、图片处理和组图排版的流程 1. 确定排版 2. 用PS处理位图 3. 生成矢量统计图 4. 用AI制作模式图并处理 5. 用AI制作排版组图 6. 导出为.tiff或.eps 三、图片素材与示意图的绘制方法 1. 绘制图片素材 2. 绘制示意图 结论 引言…

毕业论文系统图1

:毕业论文管理的有关组织结构 毕业论文管理的业务用例图 图1&#xff1a;选题业务用例的流程图&#xff08;活动图&#xff09; 图2&#xff1a;论文答辩业务的流程图 图3&#xff1a;业务用例Conselling的流程图 图4&#xff1a;业务用例结果查询流程图 图5&#xff1a;业务用…

4个流程图画图网站推荐

流程图画图网站推荐 1. 概述2. Excalidraw3. diagrams.net4. 语雀5. iodraw结束语 1. 概述 在日常的学习、工作中&#xff0c;我们通常是使用文字来记录及表述自己的想法或意见&#xff1b;但&#xff0c;有时文字的说明会显得枯燥&#xff0c;因此我们插入各种图&#xff08;…

如何从0开始撰写一篇CS论文?(内附写作流程图)

作为曾经熬通宵肝论文的过来人&#xff0c;小编要吐槽&#xff0c;论文写久了真的会头秃&#xff0c;尤其是确定选题和创新点的时候&#xff0c;是薅头发事件的高发阶段。 对于那些导师放养、在自己的摸索中磕磕绊绊前行的科研新手们&#xff0c; 焦虑总是瞅准时机就扑面而来—…

国自然和毕业论文的流程图用这个格式导入Word可无限放大

AI编辑的图片导出EMF格式可直接插入Word和PPT中 可无限放大 不推荐WMF&#xff0c;导入word可能会发生格式变化 还可在PPT中去除分组再编辑

科研常用到的计算机编程,科研必备:几款好用的流程图工具,助力你的论文/科研绘图...

写SCI论文常常会遇到一个问题——如何才能让读者通俗易懂地理解自己的研究?如果不能让读者了解研究过程,读者会对研究结果是否合理、如何应用存在疑问;尤其是期刊编辑和审稿人如果不能通过咱们的叙述,清楚地了解研究内容,那么论文很可能面临大修乃至被拒。 要说怎么能让读…