注:仅展示部分文档内容和系统截图,需要完整的视频、代码、文章和安装调试环境请私信up主。
基于spark的健康膳食推荐系统设计与实现
摘要
本文对健康膳食推荐系统的构建流程进行了介绍,其主要包括需求分析详细设计、系统实现等重要部分组成,在此基础上构建的系统可应用到实际的健康膳食推荐系统业务中。本系统的主要特点在于将Django应用到健康膳食推荐系统中,Django的引入可提高系统开发效率,最终实现的系统具备运行稳定易用以及实用的特点。
关键字:推荐系统;网站;Django;mysql
目录
第一章序论
1.1研究背景以及意义
随着社会的不断进步和飞速发展 ,人们对健康理念的认识更加的成熟。人们 普遍地将运动健身作为促进人们健康的有效手段。世界卫生组织(WH0)报告指 出:“ 缺乏体育运动是疾病的主要原因。 ” 适当的运动有助于提高心肺、 大脑、神经等方面的功能,同时有利于心理健康。然而,大多数人认为的运动健身 了 就会健康,其实这是个误区。 运动对于健康的正面意义,可能涉及运动强度、 运动前后的饮食和个人体质等因素。只有科学合理的运动健身,才有益人们的身心健康。只注重运动 ,而忽视饮食, 就会影响健康。饮食作为在运动与健康之间的重要变量 ,一直被人们所忽视 。
同时,一般的运动健身爱好者每当涉及到饮食问题都会有众多的烦恼 :不会下厨下厨选择什么食物,做什么菜,摄入多少热量、碳水化合物、 蛋白质、脂肪等,缺少共同爱好者交流平台,对自己的身体数据不够了解等。 由于缺乏足够的运动营养学知识,人们不再只通过传统的书本来获取知识,更多的是通过互联网来帮助自己合理制定饮食计划。 但互联网信息爆发式地增长,造成信息严重超载,远远超过了人们所能分析、处理和利用的范围。 对于运动健身爱好者而言,即使通过互联网了解到了相关营养学知识,但是如何吃得既符合营养健康标准,又符合自己口味,依旧是一件相对复杂繁琐的事情。随着推荐系统的出现和技术不断的成熟进步,运动健身爱好者的这个问题将不再复杂繁琐,而是轻松简单的。
1.2课题研究现状
目前对饮食推荐系统已有的研究大多数旨在确保用户饮食的偏好、多样化或 营养保证。在 2010 年,J. Freyne 和 S. Berkovsky[19,20]描述了一种基于成分的方法, 在该方法中,他们将用户对新食谱的偏爱推断为用户对该食谱中每种成分的偏爱 的累积总和,这形成了基于用户的 K 最近邻算法的基础,该方法在当时较为新颖 且具有一定影响力,并被 M. Harvey 等人加以应用。随后又出现了更先进的方法来应对不同的挑战。在 2012 年,F. Kuo 等人将配料分组为子集,每个子集都视为内容,提出了一种基于加权图的餐饮计划方法;同年,C. Teng 等人使用以项目为中心的基于内容的推荐,并应用成分网络来识别相似的食谱。这些方法奠定了饮食推荐系统的基础,但它们仅仅专注于食物中的成分,推荐效率并不高。Y.V. Pinxteren 等人在 2011 年提出了向数据库中的每个食谱添加自定义注释,然后要求用户对单个食谱进行评分的方法,最后推荐与用户正面评价的食谱具有共同注释的食谱,这种方法可以考虑到更多的食物选择因素,但是注释集相对较小,并且特定于系统的食谱数据库,这限制了该推荐系统不能自动采用新的用户组。
M. Ge等人在 2015 年提出了一种利用标签和潜在因素来推荐食谱的方法。T. Ueta等和 D. Elsweiler等人分别于 2011 年和 2015 年讨论了基于营养信息自动提取的 菜谱推荐系统以支持营养均衡。这些方法虽然在受约束的上下文中有效,但都取决 于足够的预先存在的用户偏好数据,因此它们很容易在冷启动情况下出现问题,C. Trattner 等人于 2018 年提出了一种较为新颖的在冷启动场景下预测用户对菜品 偏好的方法。 国内对于饮食推荐系统方面的研究相对国外研究成果比较少,主要是因为起 步相对较晚,同时中国的膳食结构也要复杂许多。市场上的饮食软件主要以商业价 值为设计导向,如饿了么等众多的外卖软件主要基于地理信息和商家合作进行饮 食推荐,美食社区网站主要是基于访问量和收藏量等进行饮食推荐,它们皆未考虑 到当下的即时情境以及用户的饮食偏好和营养结构。
国内关于饮食推荐的研究,大多是基于内容、关联规则和协同过滤的推荐。2011 年,张一平将基于 Agent的建模与仿真方法和电子商务个性化推荐相结合进行个性化餐饮推荐研究;2012 年,孔令恺在传统的协同过滤基础上设计出了一套基于相似用户的下单数据的餐饮推荐系统;2015 年,赵恒设计出了一套基于混合推送策略的个性化在线美食推荐系统;2016 年,盛实旺设计的饮食推荐系统对每个菜品都设置了相关的健康属性,并引入改进后的 Apriori 算法,提高了算法和推荐的效率;2018 年,王伟伟提出了面向大学校园内的基于情境感知的餐饮推荐方法;2019 年,黎丹雨将 K 均值聚类算法和 Apriori 关联规则算法联合针对用户偏好进行菜品的推荐。综上所述,目前饮食推荐的相关研究成果中考虑的因素都较为单一,应用范围有限,且在实际工程应用中也缺乏一定的合理性和准确度[2]
1.3初步设计方案
第三章系统详细设计
3.1系统设计原则
网站设计原则包含以下几点:
(1)实用性原则,要实现网站应用推广,前提是网站必须要具有实用性。要使网站能够保证实用性,必须从用户体验出发,网站界面设计务必人性化,使用户操作起来更加得心应手,界面要友好并温和,在使用过程中过户不会产生排斥感。测试要从整体网站开发始末考虑出发,在选择例子进行测试时,要根据用户需求,筛选并分析结果才能制定,要使其效果能够充分去解决用户所需,满足用户需求,及其实用性。
要想一个信息网站能够成功上线运行,最终通过验收,实用性就是其验收的重要前提,本网站设计之初就深知实用性原则,故而在设计网站过程中严格遵循实用性原则。
(2)安全性原则:网站能够给工作带来便利的同时,设计网站时就必须重点考虑到其安全性,隐私性方面等问题。特别是在加强账户安全,信息安全,防入侵安全等此类因素,一个安全的程序才能让用户更加的放心去使用,避免用户信息的泄露,导致用户的体验感很低等。
(3)易操作性原则:为了能够使用户在操作上有更好的体验,在网站设计使就应该优先考虑易操作性。网站设计更多时候是为了使用户能更加便捷且高效的解决繁琐的问题,所以在操作上如果步骤较多,并难易程度较高,网站就失去了本来的价值,总之能快速去操作的问题,据不要分解成多步来完成,能够设计成当下流行的一键完成最佳,一个易于操作的程序,才会有更多的用户去使用,而不是让用户进入程序以后无从下手。要记住网站开发正是用于用户,所以设计一定是从用户视角去考虑问题。要及时且认真对待用户反馈,对反馈进行有效应对。
3.2系统的需求分析
该网站是为了辅助对系统信息的管理所研发,同时也是为了帮助用户进行健康膳食推荐系统系统或者管理员对健康膳食推荐系统系统等信息进行管理,因此,该网站必须要做到,健康膳食推荐系统系统或用户可以浏览健康膳食推荐系统系统等信息,同时,健康膳食推荐系统系统可以进行健康膳食推荐系统系统以及个人信息的修改,而该网站必须还有一个管理员的角色去操作管理员的功能,例如查看用户的健康膳食推荐系统系统情况等。
3.3系统的工作原理
本网站工作原理图如图3-1所示。
图3-1网站工作原理图
3.4系统功能操作流程
在管理网站的时候,需要先对信息化流程有自己的基本认识,对网站的软件开发步骤展开设计,从底层对数据库进行设计。网站的开发流程如图3-2所示。
3.4.3添加信息流程
用户在操作添加信息功能的时候,在界面中所输入的对应的数据都会在界面上进行正则校验去验证数据是否符合规则,数据只有符合特定的规则的情况下,才可以提交给接口,才能将这个增加的操作完成,这样做的目的主要是为了减少接口的无效请求,同时加大了网站操作过程中的严谨性,从而减小了服务器的压力。网站的添加信息如图3-5所示。
3.7.1 数据库逻辑设计
数据库逻辑设计,原理是把概念结构E-R图转变成数据库管理系统适用的逻辑结构。人们通常使用的是Oracle或mysql等关系型数据库,因此在设计逻辑结构时,一般用三步来完成:(1)将E-R图转换为关系模型(2)根据具体数据库监管系统的特征和制约转换为指定数据库监管系统支持下的数据模型(3)进行实体属性的优化[6]。
因为用户所描述的现实参杂许多重复多余的信息,我们还需对信息进行3NF精简。第一NF,使字段不再分解;第二NF,规范实体的属性完全仰赖于主关键字;第三NF,减除相关依赖,即要求一个数据库表中不包含已在其它表中已包含的非主关键字信息[7]。
经过3NF的优化处理,可以得出系统的逻辑结构表。如下:
用户(主键ID,名称,密码,年龄,身份证号码,性别,电话)
公告(主键,添加时间,名称,分类,详情)
配置(主键,名称,参数值)
3.7.2 数据库物理设计
物理设计,依据逻辑结构设计所得的实体属性进一步设计成数据库表结构,为满足需求限制,表结构会设置相应的制约条件。表结构设计的是否合理,关系着系统性能的好坏,以及对后期维护更新的影响[8]。
表4-1 用户表
字段 | 类型 | 字段说明 | 备注 |
Id | Int | 主键 | 自增 |
Username | Varchar(50) | 用户名 | 非空 |
Pass | Varchar(30) | 密码 | 非空 |
Sex | Varchar(30) | 性别 | 默认为1 |
addtime | Date | 添加时间 | 跟随系统时间 |
age | Char | 年龄 | |
phonenumber | Varchar(50) | 电话 |
表4-2 配置表
字段 | 类型 | 字段说明 | 备注 |
Id | Int | 主键 | 自增 |
Name | Varchar(50) | 名称 | 非空 |
value | Varchar(30) | 参数值 |
表4-3 公告表
字段 | 类型 | 字段说明 | 备注 |
Id | Int | 主键 | 自增 |
Addtime | Date | 添加时间 | 非空 |
title | Varchar(30) | 名称 | 非空 |
Fenlei | Varchar(30) | 分类 | |
Xiangqing | Varchar(30) | 详情 | 非空 |
表4-4 token表
字段 | 类型 | 字段说明 | 备注 |
Id | bigint | 主键 | 自增 |
userid | bigint | 用户id | 非空 |
username | varchar(100) | 用户名 | 非空 |
tablename | varchar(100) | 表名 | |
role | varchar(100) | 角色 | 非空 |
token | varchar(100) | 密码 | 非空 |
addtime | timestamp | 添加时间 | 非空 |
expiratedtime | timestamp | 过期时间 | 非空 |
第四章系统功能的实现
4.1用户登录模块
在该界面输入对应的账号和密码,并需要填写正确,点击提交以后,系统在数据库后查询到了对应的数据,返回信息给系统,系统进行判断,得到登录成功的提示时,才能进入到系统的首页中,该健康膳食推荐系统系统的用户登录界面如图5-1所示:
4.2首页界面模块
用户在电脑中使用该网站时,通过正确的账号和密码进行登录,同时进入到系统的首页,该健康膳食推荐系统系统的首页界面如图5-2所示:
注:仅展示部分文档内容和系统截图,需要完整的视频、代码、文章和安装调试环境请私信up主。