网站域名注册如何填写,网站增加新闻功能,宁津县建设局网站,做网站有发展吗文章目录0 简介1 设计概要2 课题背景和目的3 协同过滤算法原理3.1 基于用户的协同过滤推荐算法实现原理3.1.1 步骤13.1.2 步骤23.1.3 步骤33.1.4 步骤44 系统实现4.1 开发环境4.2 系统功能描述4.3 系统数据流程4.3.1 用户端数据流程4.3.2 管理员端数据流程4.4 系统功能设计5 主…文章目录0 简介1 设计概要2 课题背景和目的3 协同过滤算法原理3.1 基于用户的协同过滤推荐算法实现原理3.1.1 步骤13.1.2 步骤23.1.3 步骤33.1.4 步骤44 系统实现4.1 开发环境4.2 系统功能描述4.3 系统数据流程4.3.1 用户端数据流程4.3.2 管理员端数据流程4.4 系统功能设计5 主要页面设计5.1 登录页面设计5.2 系统首页设计5.3 电影详情页面设计5.4 代码实现5.4.1 Django配置5.5 模板配置5.6 用户登录功能实现5.7 图片上传功能实现5.8 个性化推荐功能实现5 最后0 简介今天学长向大家分享一个毕业设计项目基于协同过滤的电影推荐系统 项目分享:见文末!1 设计概要21世纪是信息化时代随着信息技术和网络技术的发展信息化已经渗透到人们日常生活的各个方面人们可以随时随地浏览到海量信息但是这些大量信息千差万别需要费事费力的筛选、甄别自己喜欢或者感兴趣的数据。对网络电影服务来说需要用到优秀的协同过滤推荐功能去辅助整个系统。系统基于Python技术使用UML建模采用Django框架组合进行设计Mysql数据库存储数据。本系统的功能主要包括用户注册、登录、信息维护、搜索电影、电影评分、个性化推荐以及管理员进行信息管理等。个性化推荐功能使用基于用户的协同过滤算法和热点推荐来实现。开发工具主要有Pycharm、Python3.8、Django3、mysql8、Navicat等。电影在线推荐系统很大程度上提高了对电影管理的效率符合广大用户的基本需求。2 课题背景和目的日益发展的网络技术与信息技术各种电影网站也是逐渐应运而生例如腾讯视频、优酷视频、爱奇艺视频等。人们可以随时随地浏览到海量信息但是这些大量信息千差万别需要人们费事费力的筛选、甄别自己喜欢或者感兴趣的数据。这个课题主要是解决电影网站的个性化推荐功能以便准确向用户推荐感兴趣的信息。个性化推荐的主要思想是根据用户的历史操作行为分析用户兴趣喜好然后把用户比较感兴趣的同时没有操作行为的项目推荐给用户。个性化推荐也可以根据用户操作行为的变化而实时分析并推荐用户喜好程度比较高的项目这样用户会对网站产生粘性提高用户的忠诚度为商家带来流量进一步提高商家利润具有较大的商业价值可以达到双赢的目的。3 协同过滤算法原理3.1 基于用户的协同过滤推荐算法实现原理传统的基于用户User-Based的协同过滤推荐算法实现原理分四个步骤3.1.1 步骤1根据用户历史行为信息构建用户-项目评分矩阵用户历史行为信息包括项目评分、浏览历史、收藏历史、喜好标签等本文以单一的项目评分为例后期介绍其他行为信息和混合行为信息用户-项目评分矩阵如表1所示注用户A对项目1的评分是1分用户A对项目2没有评分。3.1.2 步骤2根据用户-项目评分矩阵计算用户之间的相似度。计算相似度常用的方法有余弦算法、修正余弦算法、皮尔森算法等等后期我们会将相似度算法展开讲解这里以余弦算法为例。余弦算法公式如图1所示3.1.3 步骤3根据用户之间的相似度得到目标用户的最近邻居KNN。KNN的筛选常用的有两种方式一种是设置相似度阀值给定一个相似度的下限大于下限的相似度为最近邻居一种是根据与目标用户相似度的高低来选择前N个最近邻居本次以前N个为例后期会详细对比讲解两者。相似度排序可用经典冒泡排序法。3.1.4 步骤4预测项目评分并进行推荐。最常用的预测公式如图所示注该公式实际上是相似度和评分的加权平均数。表示用户u对项目i的预测评分n是最近邻集合v是任意一个最近邻居 表示最近邻v和目标用户u的相似度乘以最近邻v对项目i的评分。得到预测评分后按照评分高低进行降序推荐。4 系统实现4.1 开发环境Python3.8Django3mysql8navicat数据库管理工具html页面javascript脚本jquery脚本bootstrap前端框架layer弹窗组件等。4.2 系统功能描述系统代码目录项目功能前台首页地址http://127.0.0.1:8000/后台首页地址http://127.0.0.1:8000/admin管理员账号admin 管理员密码admin前台用户包含注册、登录、注销、浏览电影、搜索电影、信息修改、电影评分、个性化推荐电影等功能后台管理员包含用户管理、电影管理、电影类型管理、评分管理、权限管理等。性化推荐功能游客采用热点推荐根据电影总评分降序推荐登录用户首先根据用户评分记录使用基于用户的协同过滤推荐算法推荐电影如果没有推荐结果采用热点推荐根据电影总评分降序推荐算法的实现使用python常规函数严格按照算法步骤实现。举例用户A对电影1,2,3进行评分用户B对电影1,2进行评分用户C对电影1进行评分那么用户BC 不会对用户A进行推荐用户AC 不会对用户B进行推荐用户AB 会对用户C进行推荐电影24.3 系统数据流程电影在线推荐系统主要由用户端、管理员端组成。用户端主要负责用户注册、登录、信息维护、搜索电影、查看电影、电影评分、个性化推荐等管理员端负责管理员登录、信息维护、用户管理、电影类型管理、电影管理、评分管理等。4.3.1 用户端数据流程用户端的基本流程共有四个步骤1、用户在系统首页可浏览电影、搜索电影、个性化推荐。2、用户输入用户名、年龄、性别、邮箱、登录密码进行注册。3、用户注册成功后输入正确的登录凭证进入系统若登录凭证不正确系统会自动返回到登录页面提示用户重新输入登录信息直到用户成功登录进入系统。4、用户成功进入系统后可以进行电影打分、修改信息、个性化推荐等。具体如下图所示4.3.2 管理员端数据流程管理员端的基本流程共有三个步骤1、管理员输入正确的登录凭证进入系统若登录凭证不正确系统会自动返回到登录页面提示管理员重新输入登录信息直到管理员成功登录进入系统。2、管理员成功进入系统后首页显示用户数量、电影类型数量、电影数量、评分数量等数据统计信息。3、管理员具有用户管理、电影类型管理、电影管理、评分管理等功能。根据上述流程可得到管理员端的数据流程图具体如下图所示4.4 系统功能设计电影在线推荐系统主要由用户端、管理员端模块组成各个模块下边又有许多小模块组成每个模块的作用各不相同但彼此之间又存在一定关系通过分析上述模块之间的联系以及系统需求可得到该系统的功能架构具体如图5 主要页面设计5.1 登录页面设计用户登录页面使用DIV标签布局Form标签提交登录名、登录密码登录时Jquery脚本会验证登录名或登录密码是否为空如果为空会给出提示取消登录操作登陆成功也会给出登录成功提示5.2 系统首页设计统首页使用DIV标签布局分为头页面、中间页面、底页面其中头页面是公共页面包含网站名称、搜索框、注册按钮、登录按钮、用户名、注销按钮、电影类型等中间页面是内容页面不同的页面展示不同的内容底页面也是公共页面使用Django的include指令引入头和底页面5.3 电影详情页面设计电影详情页面使用DIV标签布局通过Django的include指令引入头页面和底页面内容页展示电影封面、电影名称、电影类型、电影简介和五角星评分按钮。如果当前登录用户没有对该电影进行评分那么评分五角星颜色是灰色如果有用户评分那么根据评分多少显示具体个数的黄色五角星五角星评分功能使用Jquery的raty脚本组件5.4 代码实现5.4.1 Django配置Django是一个开放源代码的Web应用框架由Python写成。采用了MTV的框架模式即模型M视图V和模版T。通过Pycharm工具可以轻松创建Django框架项目初始项目中主要包含settings.py主配置文件、urls.py路由配置文件、manage.py项目启动配置文件等。settings.py主配置文件可配置项目自定义应用程序、数据库链接、视图路径、静态资源路径、日志等urls.py路由配置文件主要是配置请求路由、项目名称等。# 在setting.py中定义全局变量该变量的变量名需要全部大写否则会引用不到importos# import rpvpext.webutilfrompathlibimportPath# 项目根目录例如F:\pycharmworkspace\WebMovieCFRSPythonBASE_DIRPath(__file__).resolve().parent.parent# setting中的加密盐,该配置是django的安全配置防止攻击用的该值是startProject时用系统的某个算法产生SECRET_KEYdjango-insecure-9nvr8lf^amyc)9y)wgcm2th*%j2l-s4_(%#z^%l1z4neyd$# 调试模式是否开启DEBUGTrue# 访问web服务的的Ip配置,用于配置能够访问当前站点的域名IP地址# 当 DEBUG False 时必须填写有以下三种使用方法# []空列表,表示只有127.0.0.1localhost能访问本项目# [*]表示任何网络地址都能访问到当前项目# [192.168.1.3, 192.168.3.3] 表示只有当前两个主机能访问当前项目。ALLOWED_HOSTS[*]# app应用的安装配置INSTALLED_APPS[django.contrib.admin,django.contrib.auth,django.contrib.contenttypes,django.contrib.sessions,django.contrib.messages,django.contrib.staticfiles,apps.index.apps.AppsConfig,# 自定义app,前台首页apps.user.apps.AppsConfig,# 自定义app,用户apps.type.apps.AppsConfig,# 自定义app,电影类型apps.item.apps.AppsConfig,# 自定义app,电影apps.scorerecord.apps.AppsConfig,# 自定义app,评分记录apps.common.apps.AppsConfig# 自定义app,公共]# django的中间件配置即MIDDLEWARE设置# 所谓中间件就是从用户请求到用户请求结束期间所做的操作# 即用户的请求会次从上到下依次执行MIDDLEWARE中的配置# 然后服务器响应用户的时候会再次从下至上依次执行# 在request请求前后和response响应前后执行MIDDLEWARE[django.middleware.security.SecurityMiddleware,# 安全中间件django.contrib.sessions.middleware.SessionMiddleware,# 会话中间件 启用会话框架django.middleware.common.CommonMiddleware,# 通用中间件# CSRF防御中间件,增加防御保护以防止跨站伪造请攻击。通过向表单Post请求中添加隐藏表单字段以及对请求进行检查以获取正确的值。django.middleware.csrf.CsrfViewMiddleware,# admin用户认证中间件,在每个HttpRequest请求对象中添加user属性表名当前已登录的用户django.contrib.auth.middleware.AuthenticationMiddleware,# 消息中间件提供Django的cookie以及session框架的支持这两个基于消息中间件实现。django.contrib.messages.middleware.MessageMiddleware,# X框架操作中间件通过头部信息中增加X-Frame-OptionsLAI 防止简单的点击劫持。django.middleware.clickjacking.XFrameOptionsMiddleware,# 前台登录权限验证中间件自定义apps.common.loginMiddleware.LoginMiddleware,]# 指定根级url的配置ROOT_URLCONFMovieRecommendSystemPython.urls# 它用于指定模板的配置信息列表中每一元素都是一个字典。如下所示是 Django 默认自带模板引擎# 全局上下文处理器提供的变量优先级高于单个视图函数给单个模板传递的变量。# 这意味着全局上下文处理器提供的变量可能会覆盖你视图函数中自定义的本地变量# 因此请注意避免本地变量名与全局上下文处理器提供的变量名称重复。# 这些变量名包括perms, user和debug等等。TEMPLATES[{BACKEND:django.template.backends.django.DjangoTemplates,# 默认使用的模板引擎DIRS:[os.path.join(BASE_DIR,templates)],# 模板路径APP_DIRS:True,# 引擎是否在已安装应用程序的目录内查找模板源文件。OPTIONS:{# 传递给模板引擎的其他参数context_processors:[# 上下文处理器也可以自定义这样就可以在模板中直接使用debug、request、auth、message变量# 在模板里面可以直接使用settings的DEBUG参数以及强大的sql_queries:它本身是一个字典# 其中包括当前页面执行SQL查询所需的时间django.template.context_processors.debug,# 在模板中可以直接使用request对象django.template.context_processors.request,# 在模板里面可以直接使用userperms对象。django.contrib.auth.context_processors.auth,# 在模板里面可以直接使用message对象。django.contrib.messages.context_processors.messages,# 也可以继续添加# django.template.context_processors.i18n, # 在模板里面可以直接使用settings的LANGUAGES和LANGUAGE_CODE# django.template.context_processors.media, # 可以在模板里面使用settings的MEDIA_URL参数# django.template.loaders.filesystem.Loader,# django.template.loaders.app_directories.Loader,],},},]# 项目部署时Django的内置服务器将使用的WSGI应用程序对象的完整Python路径。WSGI_APPLICATIONMovieRecommendSystemPython.wsgi.application# 数据库链接配置也可以以配置文件的形式加载数据库信息django目前支持sqlite、mysql、postgreSQL、oracle数据库# sqlite数据库django.db.backends.sqlite3,# postgreSQL数据库django.db.backends.postgresql_psycopg2,# mysql数据库django.db.backends.mysql# oracle数据库django.db.backends.oracleDATABASES{default:{ENGINE:django.db.backends.mysql,NAME:movierecommendsystempython,USER:root,PASSWORD:root,HOST:127.0.0.1,PORT:3306,}}# 这是一个支持插拔的密码验证器且可以一次性配置多个# Django 通过这些内置组件来避免用户设置的密码等级不足的问题。AUTH_PASSWORD_VALIDATORS[{# 检查密码和用户某些属性的相似性NAME:django.contrib.auth.password_validation.UserAttributeSimilarityValidator,},{# 检查密码的最小长度(默认8)NAME:django.contrib.auth.password_validation.MinimumLengthValidator,},{# 检查密码是否出现在常用密码表中NAME:django.contrib.auth.password_validation.CommonPasswordValidator,},{# 检查密码是否全为数字NAME:django.contrib.auth.password_validation.NumericPasswordValidator,},]# 设置语言zh-hanszh-cnen-usLANGUAGE_CODEzh-hans# 设置时区Asia/ShanghaiUTCTIME_ZONEAsia/Shanghai# 设置国际化根据个人需要进行设置USE_I18NTrue# 相同内容被不同时区地区的用户访问时是否以不同格式内容展示(例如时间日期数字)USE_L10NTrue# 设置保存到数据库时间类型是否为UTC时间如果不需要请设置为false,默认为trueUSE_TZTrue# 它指的是静态资源的存放位置静态资源包括 CSS、JS、Images。比如我们要在项目中添加一些静态图片# 通常这些静态图片被存放在新建的 static 目录下这样就实现了通过 STATIC_URL /static/ 路径对静态资源的访问。STATIC_URL/static/# 静态文件的路径STATICFILES_DIRS[os.path.join(BASE_DIR,static)]# 设置图片上传路径MEDIA_ROOTos.path.join(BASE_DIR,media/)# 图片的统一路由MEDIA_URL/media/# 日志LOGGING{version:1,disable_existing_loggers:False,handlers:{console:{level:DEBUG,class:logging.StreamHandler,},},loggers:{django.db.backends:{handlers:[console],propagate:True,level:DEBUG,},}}5.5 模板配置模板是html文件默认路径是项目根路径的templates文件夹中。Django模板中主要有两种特殊符号{{ }}和 {% %}{{ }}表示变量可直接获取request、session、application中的变量在模板渲染的时候替换成值{% %}表示逻辑相关的操作可直接编写python代码。图5.5是前台index.html部分配置。5.6 用户登录功能实现用户在登录页面登录失败会提示登录失败原因用户登录成功会提示正在跳转页面。用户登录实现代码具体如图5.7 图片上传功能实现本系统图片上传功能使用Django后台框架的Model组件实现在model文件中直接声明实体类的属性类型是图片类型。图片上传功能代码具体如图5.8 个性化推荐功能实现基于用户的协同过滤推荐算法实现可分为三个步骤首先将用户电影评分数据构建成用户-电影评分矩阵然后通过皮尔森相似度算法计算用户之间的相似度再从中选出与目标用户相似度最高的TopN个最近邻用户然后计算TopN个近邻用户的相似度与电影的加权平均数最后得到K个推荐的电影。5 最后 项目分享:见文末!