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的特征。
在这里插入图片描述

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 如何查看redis内存使用情况

    如何查看redis内存使用情况

    2021年10月16日
    56
  • python基础语法个人笔记_python基础题库

    python基础语法个人笔记_python基础题库python语法规范python的语法规范非常重要,简洁明了是python的特性,以下是python语法的一些说明python3的编码格式是unicode(utf-8)标识符的规则:由字母、数字

    2022年7月28日
    5
  • 手撸 webpack4.x 配置(二)[通俗易懂]

    手撸 webpack4.x 配置(二)[通俗易懂]接着上一篇手撸webpack4.x配置(一)继续学习webpack配置。今天我学习配置下webpack中另一个模块plugins配置。之前我们都是手动在打包后(dist)目录里手动新建的index.html然后把打包后生成的JS文件手动的引入,今天我们来安装一个插件让webpack自动给我们生成模板!1官网配置地址:html-webpack-p…

    2022年8月22日
    5
  • JAVA后端开发浅谈[通俗易懂]

    JAVA后端开发浅谈[通俗易懂]一、背景从后端来讲,目前市场上的电子商务软件基本上可以分为两个阵营,即php阵营和Java阵营。两个阵营的开发基本上都是各自围绕着各自的开发语言(php/Java),选取最为兼容合适的框架结构和数据库,然后进行服务器端的开发。以下附上PHP和Java语言的区别介绍和原文链接:《php和java的区别有哪些》php中文网Java语言Java是一门计算机编程语言,和C++、Python等编程…

    2022年7月8日
    29
  • C++ 虚函数表解析[通俗易懂]

    C++ 虚函数表解析[通俗易懂]C++虚函数表解析 陈皓http://blog.csdn.net/haoel  前言 C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,R

    2022年4月19日
    49
  • css3实现遮罩层_div遮罩层

    css3实现遮罩层_div遮罩层JS+CSS简单实现DIV遮罩层显示隐藏

    2022年4月21日
    63

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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