python+Django+Mysql+协同过滤电影推荐系统简介

python+Django+Mysql+协同过滤电影推荐系统简介电影推荐系统技术采用前端:bootstrap3+vue+jquery后端:django2.2.1+djangorestframework(MVC框架)数据库:mysql数据集:豆瓣数据集+豆瓣电影爬虫+csv存储movielens数据集+图片+用户数据和评分数据+csv存储功能介绍录入电影信息用户打分电影标签分类电影推荐电影分享电影收藏后台管理系统。算法基于用户的协同过滤算法:协同过滤,根据用户的打分来进行推荐。从所有打分的用户中找

大家好,又见面了,我是你们的朋友全栈君。

该系统为基于协同过滤算法的Django电影推荐系统, 点击跳转 详情介绍如下所示。

技术介绍

  • 前端: bootstrap3 + jquery.js
  • 后端: django 2.2.1 + djangorestframework(负责api部分)
  • 数据库: mysql5.7 / sqlite3
  • 算法: 基于用户的协同过滤/基于物品的协同过滤

数据集介绍

豆瓣数据集

基于requests的python爬虫去抓取豆瓣电影的电影信息,包含图片信息,总共2250部。
数据属性:
id,title ,image_link ,country ,years ,director_description,leader,star ,description,all_tags,imdb,language,time_length
数据库展示
评分: 附带随机生成数据的脚本,可以随机生成指定数目的用户和用户的评分

movielens数据集

movielens 100k数据集+图片

数据维度: movieId,title,genres,picture
电影数量: 37544
评分数量: 93202+
movielens数据集+图片+用户数据和评分数据+csv存储

功能介绍

电影展示,电影搜索,标签分类

在这里插入图片描述

标签分类

在这里插入图片描述

用户的登录,注册,修改信息

用户注册界面

在这里插入图片描述

用户登录界面

在这里插入图片描述

用户个人信息

在这里插入图片描述

用户注册代码

在这里插入图片描述

用户对电影的打分,收藏和电影的详情页面

在这里插入图片描述

基于user和Item的协同过滤推荐算法,为用户推荐想看的电影

用户推荐界面

在这里插入图片描述

用户推荐部分代码在这里插入图片描述

物品推荐界面

在这里插入图片描述

物品推荐部分代码

在这里插入图片描述

后台管理系统,可以进行电影信息的增删改查

在这里插入图片描述

数据库模型代码

在这里插入图片描述

算法介绍

冷启动问题解决

在用户首次注册的时候会为用户提供感兴趣的标签选择界面。然后在用户未进行打分的情况下,会为用户推荐喜欢标签的电影。
在这里插入图片描述

推荐算法改进—-结合标签的协同过滤推荐

在冷启动页面用户选择标签后将用户对这些标签标签的喜爱值设为5。
在用户为电影打分后,会根据此电影的标签来更新用户对标签喜爱值得分。
在根据协同过滤得到为用户推荐的电影后,如果推荐的电影数量不足15部,则从用户喜爱的标签中选取一部分电影来填充
更新标签喜爱值的策略将用户对电影的打分值减三然后加到喜爱值表中。

基于用户的协同过滤

算法: 协同过滤, 根据用户的打分来进行推荐。从所有打分的用户中找出和当前用户距离最近的n用户,然后从n个用户打分的电影中找15个当前用户未看过的电影。
最近距离算法通过协同过滤来实现。
推荐算法—协同过滤 – 简书 此项目采用的是皮尔逊相关系数来计算相似度。采取基于用户模型的的协同过滤(Neighbor-based Collaborative Filtering)。
皮尔森距离公式:
在这里插入图片描述

基于物品的协同过滤

计算物品之间的相似度,然后根据相似度来推荐

物品间的共现矩阵,两个物品同时被n个用户购买
物品间的相似度
在这里插入图片描述

相似度:共现值/N的点赞值M的点赞值 开根号
推荐值: 相似度
评分
根据用户点赞过得商品来寻找相似度推荐。
计算每个点赞过的物品和所有未点赞物品之间的得分。得分=相似度*打分值
得分越高表示越相似。 然后返回结果

基于tensorflow/文本卷积网络的推荐

通过movielens所提供的用户信息: 年龄—性别—职业。这三个数据维度来刻画用户数据信息。然后构造文本卷积网络来生成模型。用户可以根据自己的年龄/性别等特征信息来得到个性化的推荐。

网络的第一层是词嵌入层,由每一个单词的嵌入向量组成的嵌入矩阵。下一层使用多个不同尺寸(窗口大小)的卷积核在嵌入矩阵上做卷积,窗口大小指的是每次卷积覆盖几个单词。这里跟对图像做卷积不太一样,图像的卷积通常用2×2、3×3、5×5之类的尺寸,而文本卷积要覆盖整个单词的嵌入向量,所以尺寸是(单词数,向量维度),比如每次滑动3个,4个或者5个单词。第三层网络是max pooling得到一个长向量,最后使用dropout做正则化,最终得到了电影Title的特征。
在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/132055.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 数据库服务器修改地址,数据库服务器修改地址

    数据库服务器修改地址,数据库服务器修改地址

    2021年11月28日
  • IOS安全、逆向、反编译1-越狱知识讲解[通俗易懂]

    IOS安全、逆向、反编译1-越狱知识讲解[通俗易懂]之前开发了一个对安全性要求比较高的APP,所以对安全、逆向和反编译有了一些认识,最近有时间就想系统的把这些知识做一个整理。今天就开始把我的学习过程记录下来。iOS越狱环境搭建在学习iOS越狱之前,我们当然需要一台iOS设备,由于现在基本上都是64位系统为主,所以最好是使用ARM64架构的设备,因此首先我们的手机至少需要iPhone5S或者之后的iPhone设备,平板至少是iPadAir、…

  • 《算法设计与分析》期末不挂科的原因_算法设计与分析重点

    《算法设计与分析》期末不挂科的原因_算法设计与分析重点考前知识点整理算法分析基础算法的定义算法正确性算法的性质程序的定义程序与算法的区别算法设计和分析的步骤复杂度分析算法的时间复杂性算法渐近复杂性渐近分析的记号渐近上界记号渐近下界记号非紧上界记号非紧下界记号紧渐近界记号意义算法分析中常见的复杂性函数我们学校开设的这门课,过于理论,实践太少,考试不会太难,一起学习,一起不挂科!但是算法平时一定要练哦!加油!算法分析基础算法的定义算法是指解决问题的一种方法或一个过程。算法是若干指令的有穷序列。算法正确性对每一个输入实例算法都能终止,并给出

  • XML格式化工具[通俗易懂]

    XML格式化工具[通俗易懂] 做接口开发的时候,往往接受参数或返回值是一个XML的字符串。如下图,不方便辨识两种方法,1.将它保存为xxx.xml,然后用浏览器打开。这种方法稍微有些麻烦。2.使用UltraEdit工具 …

  • word2vec 中的数学原理详解(一)目录和前言

    word2vec 中的数学原理详解(一)目录和前言word2vec是Google于2013年开源推出的一个用于获取wordvector的工具包,它简单、高效,因此引起了很多人的关注。由于word2vec的作者TomasMikolov在两篇相关的论文[3,4]中并没有谈及太多算法细节,因而在一定程度上增加了这个工具包的神秘感。一些按捺不住的人于是选择了通过解剖源代码的方式来一窥究竟,出于好奇,我也成为了他们中的一员。读完代码后,觉得收获颇多,整理成文,给有需要的朋友参考。

  • Linux 内核编程总结[通俗易懂]

    Linux 内核编程总结[通俗易懂]Linux内核编程总结   从事了几年的内核编程,对内核编程有一定的经验,现总结、吐槽下,作为标记。   任何进程都有有进程的入口点,用户态的进程,其入口点是,main函数。   那么内核的入口点是什么?个人理解整个OS,运行起来就是一个进程,   内核的入口点是init进程,在这个进程中负责:   1)子进程的创建,包括内核的线程、用户态的进程。

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号