基于Spark的高考志愿填报推荐系统设计与实现
基于Spark的高考志愿填报推荐系统设计与实现
本文介绍了一个基于Spark的高考志愿填报推荐系统,该系统结合了大数据处理和机器学习技术,能够根据考生的成绩和兴趣,精准推荐合适的大学和专业。系统采用Vue框架和Element-Plus组件库构建前端界面,使用Django框架实现后端逻辑,并通过PySpark进行数据处理和分析。
研究背景
高考是中国高中毕业生升入大学的主要途径,考试成绩决定了学生的录取排名和学校专业的选择。由于高校众多、专业繁杂,学生和家长在填报志愿时常面临困扰和选择困难。为了给考生和家长提供平台,使其能够客观地根据自身情况填报以及当下发展情况,进行推荐填报。而大多数考生都是找志愿填报老师,完全听取其意见,自己没有相关了解以及个人兴趣。针对此问题,设计本系统可以更好的注重于个人兴趣以及院校水平、专业前景客观推荐。本文将推荐系统与大数据处理框架Spark相结合,帮助考生解决高考志愿填报环节的志愿选择问题。
国内外研究现状
国外研究现状
国外的研究主要关注学生个性化需求和多样化的招生制度。一些国际知名企业,如Google、Facebook等,已经开发出了一些先进的大规模推荐系统,涵盖了视频推荐、广告推荐等多个领域。这些推荐系统通常基于分布式计算框架,能够高效地处理大规模数据,提供更加准确和个性化的推荐建议。从大量信息中挖掘出有用信息,为用户进行精准推荐,有效解决了个人用户的“信息过载”问题。同时,推荐系统在消费领域发挥着不可或缺的作用,推动了企业进行数据营销,给企业和社会带来了较高的经济效益。
国内研究现状
目前多家互联网公司已经推出了高考志愿填报模拟系统,比如高考网,中国教育在线—高考频道等。考生可以输入自己的高考分数、所在省份,系统会搜索近几年各院校各专业在该省历年录取分数线与本省当年批次分数线差值低于考生这一年与本省批次线差值的学校和专业。
随着高考改革的不断深入,越来越多的学者和研究机构开始关注高考志愿填报推荐系统的研究和开发。基于Spark的高考志愿填报推荐系统作为一种分布式计算框架,能够高效地处理大规模的高考数据,提供更加准确和个性化的推荐建议。高校和科研机构已经开始进行相关研究和实验,取得了一些初步的成果。同时,一些互联网企业也纷纷涉足高考志愿填报领域,推出了一系列基于大数据分析的志愿填报辅助工具和平台。
主要研究内容
将推荐系统与大数据处理框架Spark相结合,帮助考生志愿选择问题。设计高考志愿推荐的Web前端界面。其中包括用户注册界面、用户登录界面、志愿推荐结果展示界面以及相关高考信息(高校信息与专业信息)的浏览界面。并设计高考志愿场景下的志愿推荐引擎。首先,通过阅读大量高考志愿填报文献,选取合适的用户属性,计算相似性,建立相似矩阵,寻找相似用户;其次,分析几种最常见的推荐算法,结合高考志愿填报的真实场景选择协同过滤算法作为本系统的推荐算法;最后通过Spark计算框架的并行化计算方式生成最终的推荐列表。
系统开发技术与理论
前端技术
- Vue框架技术
Vue是一个渐进式JavaScript框架,Vue具有简洁易学、组件化等特点,使用它可以快速地构建前端界面,且以组件化的方式构建用户界面,将复杂的UI拆分为独立的、可重用的组件,每个组件有自己的数据和逻辑,提高了代码的可维护性和可重用性。它采用MVVM设计模式,通过数据驱动和组件化的方式来构建用户界面。并且采用了类似HTML的模板语法,可以简洁地描述UI的结构和行为。模板语法支持绑定表达式、条件渲染、循环渲染等常见的操作,具有高效的虚拟DOM渲染机制和优化的更新策略,使得应用程序具有出色的性能。
- Element-Plus
Element-Plus是一个Vue UI库,提供大量的UI组件和开发工具,可以帮助我们快速构建美观、易用的Web应用程序。它提供了丰富的组件和工具,可以帮助开发人员快速构建现代化、高效的Web界面。Element-Plus提供了简单易用的API,可以方便地在Vue应用中集成和使用。同时,也提供了丰富的主题和样式配置选项,支持个性化的主题定制化。
后端技术
- PySpark
PySpark是Apache Spark的Python版本,适用于处理大规模数据和进行复杂的数据分析任务。它结合了Python的简洁性和Spark的性能优势,是Apache Spark的Python API。提供了丰富的功能,包括数据处理、机器学习、图计算等。它能够处理各种数据源,PySpark提供了丰富的转换操作和动作操作可以灵活地对数据进行处理和分析。
- Django框架
Django是一款基于Python的Web应用程序开发框架,具有高度的可重用性、可扩展性和灵活性,被广泛地应用于Web开发领域。Django被用于编写后端API接口和管理界面,在该系统中,Django被用于编写后端API接口和管理界面。提供了强大的对象关系映射(ORM)支持,可以轻松地将数据存储到数据库中,并且可以使用Python类来表示数据库表格。这使得开发人员可以专注于业务逻辑而不是低级别的数据访问代码。
- Scrapy技术
Scrapy是一个Python编写的高效的网络爬虫框架,支持数据抓取和处理、自动化测试等功能。使用XPath或CSS选择器来定义数据提取规则,可以灵活地从HTML或XML文档中提取所需的数据。可以根据不同的网页结构和数据格式来编写提取规则。并且Scrapy自动处理请求的发送和响应的接收,开发人员只需定义爬取规则和数据处理逻辑即可。它还支持请求的优先级、重试机制和动态代理等功能,可实现更加灵活和智能的请求管理。可用于数据挖掘、搜索引擎索引、数据监测还是网站自动化测试。
协同过滤算法
协同过滤算法是一种基于用户行为数据的推荐算法,通过分析用户的历史行为数据来计算用户之间的相似度,然后根据相似用户或相似物品的评价来预测用户对未知物品的喜好程度。这种算法能够利用兴趣相投、拥有共同经验的群体的喜好来推荐用户感兴趣的信息。
- 基于用户的协同过滤算法
通过分析用户的历史行为数据,找到与目标用户行为相似的其他用户,从而推荐目标用户可能感兴趣的物品。可以处理任何类型的物品和用户行为,提供高度个性化的推荐,但也存在数据稀疏性、冷启动问题和可扩展性等方面的挑战。
具体步骤:计算用户之间的相似度,如皮尔逊相关系数、余弦相似度等。找到与目标用户相似度最高的K个用户,然后综合这些用户对某个物品的评分来预测目标用户对该物品的评分或偏好,最后推荐目标用户评分最高的N个物品。
- 基于内容的协同过滤算法
将物品的内容信息和用户行为数据结合起来进行推荐。在电子商务、搜索引擎和广告推送等领域有着广泛的应用,能够优化搜索结果,提高用户搜索体验。
具体步骤:它侧重于物品的内容信息,如商品名称、描述、分类等,同时结合用户行为数据来分析用户的行为模式,发现用户的偏好和兴趣。通过分析这些信息,算法可以自动计算出用户的兴趣模型,并推荐与之匹配的相关物品。
系统实现
系统用到的各项技术和工具的介绍:
- Python
Python是一种高级的、解释型的程序设计语言,因为其简洁而易学、可读性强等特点,在数据处理、人工智能、机器学习、Web开发等领域得到了广泛运用。在该系统中,Python被用于编写后端服务器程序和数据处理脚本等。
- PySpark
PySpark是Apache Spark的Python版本,是一个基于内存计算的大数据处理框架,具有高效和易用的特点。在该系统中,PySpark被用于进行数据处理和分析。
- Hadoop
Hadoop是一个分布式文件系统和计算框架,能够处理大规模数据的存储和处理。在该系统中,Hadoop被用于存储和管理海量数据。
- Django
Django是一款基于Python的Web应用程序开发框架,具有高度的可重用性、可扩展性和灵活性,被广泛地应用于Web开发领域。在该系统中,Django被用于编写后端API接口和管理界面。
- Scrapy
Scrapy是一个Python编写的高效的网络爬虫框架,支持数据抓取和处理、自动化测试等功能。在该系统中,Scrapy被用于数据抓取模块的实现。
- Vue
Vue是一个渐进式JavaScript框架,由Evan You在2014年创建。Vue具有简洁易学、组件化等特点,使用它可以快速地构建前端界面。在该系统中,Vue框架被用于实现前端页面渲染和数据展示。
- Element-Plus
Element-Plus是一个Vue UI库,提供大量的UI组件和开发工具,可以帮助我们快速构建美观、易用的Web应用程序。在该系统中,Element-Plus被用于实现前端UI组件。
- 协同过滤算法
协同过滤算法是一种通过挖掘用户历史行为数据来预测用户偏好并进行个性化推荐的算法。在该系统中,我们使用基于物品的协同过滤算法来实现高校和专业的推荐功能。
系统模块实现
- 数据抓取模块
该模块使用了Scrapy爬虫框架,通过访问“阳光高考”网站来抓取大学和专业相关数据。在抓取大学数据时,我们将获取学校名称、学校logo、简介、满意度、院系设置、录取规则、食宿条件、设立专业等字段;在抓取大学专业数据时,我们将获取学历层次、专业代码、所属门类、专业类别、介绍、相近专业、从业方向、统计了毕业生规模以及男女比例等信息。
- 用户注册登录模块
该模块使用Django框架实现用户的注册和登录功能。在注册时,我们要求用户提供用户名、密码等必要信息,同时对用户输入进行合法性校验;在登录时,用户需要输入正确的用户名和密码才能成功登录系统。
- 后台管理模块
该模块是系统管理员可以对系统中的数据进行管理操作的接口,包括大学和专业数据的增删改查。我们使用Django Admin框架实现后台管理功能。管理员登陆后,进入后台管理界面,就可以对系统中的数据进行增删改查的操作。
- 高校信息查询模块
该模块是实现用户在高校名称关键词、高校所在地、学历层次等信息筛选出符合条件的国内高校的功能,该页面以卡片形式展示了高校信息。我们使用Vue+Element-Plus框架来实现前端页面渲染、数据展示和分页组件,使用Django框架来实现后端API接口。我们将20条数据为一页,以此来降低后端压力。
- 专业信息查询模块
该模块是用户可以根据专业分类以及关键词等信息筛选出符合条件的大学专业数据的功能,该页面以表格形式展示了专业信息。我们同样使用Vue+Element-Plus框架来实现前端页面渲染、数据展示和分页组件,使用Django框架来实现后端API接口。
- 个性化推荐高校和专业模块
该模块是根据用户在高考志愿填报模块所填写的预测成绩、喜欢的专业、喜欢的学校以及想去的省份所在地等信息,从数据库中查找出符合用户条件的高校以及专业数据,再个性化地推荐给用户的功能。我们使用基于物品的协同过滤算法实现系统的推荐功能,并使用Django框架实现后端API接口。
- 高校详情模块
该模块是当用户查看某高校详情时,可以看到该高校的多种信息,比如院校简介、学校领导、周边环境、通讯地址、院校设置、重点实验室、重点学科、师资力量、录取条件、食宿条件等,还可以查看该学校设立的所有专业数据。该模块同样使用Vue+Element-Plus框架实现前端页面渲染、数据展示,使用Django框架实现后端API接口,并使用基于物品的协同过滤算法给用户推荐相似的高校数据。
- 专业详情模块
该模块是当用户查看某专业的详情时,可以看到该专业的多种信息,比如学历层次、专业代码、所属门类,专业分类、专业介绍、统计信息包括该专业的毕业生规模和男女比例、相似专业、毕业后的从业方向。该模块同样使用Vue+Element-Plus框架实现前端页面渲染、数据展示,使用Django框架实现后端API接口,并使用基于物品的协同过滤算法给用户推荐相似的专业数据。
技术及功能关键词
python pyspark hadoop django scrapy vue element-plus 协同过滤算法
通过scrapy爬虫框架抓取“阳光高考”网站上的大学数据(包括了学校名称、学校logo、简介、满意度、院系设置、录取规则、食宿条件、设立专业等字段)以及大学的专业(包括了学历层次、专业代码、所属门类、专业类别、介绍、相近专业、从业方向、统计了毕业生规模以及男女比例等信息)数据
前台用户通过登陆注册后进入系统
管理员可在后台管理所有抓取到的大学及大学专业数据,以及用户填写的高考志愿意向数据
高校信息查询模块,用户可以根据高校名称关键词、高校所在地、学历层次等信息筛选出符合条件的国内高校,该页面以卡片形式展示了高校信息,其中包括了高校名称、高校LOGO、所在地、学历层次、主管部门以及高校评分等数据,分页组件以20条数据为一页,可大大降低后端压力
专业信息查询模块,用户可以根据专业分类以及关键词等信息筛选出符合条件的大学专业数据,该页面以表格形式展示了专业信息,其中包括专业名称、专业所属门类、专业所属类以及专业满意度等信息
个性化推荐高校和专业模块,这是根据用户在高考志愿填报模块所填写的预测成绩、喜欢的专业、喜欢的学校以及想去的省份所在地等信息,在数据库中查找出符合用户条件的高校以及专业数据,再个性化地推荐给用户;需要注意的是,当用户第一次访问该模块时,系统会检测用户是否已填写志愿,如果没有,必须填写后才能够推荐
当用户查看某高校详情时,可以看到该高校的多种信息,比如院校简介、学校领导、周边环境、通讯地址、院校设置、重点实验室、重点学科、师资力量、录取条件、食宿条件等,还可以查看该学校设立的所有专业数据,同时系统会依据基于物品的协同过滤算法给用户推荐相似的高校数据
当用户查看某专业的详情时,可以看到该专业的多种信息,比如学历层次、专业代码、所属门类,专业分类、专业介绍、统计信息包括该专业的毕业生规模和男女比例、相似专业、毕业后的从业方向。也可以看到该专业有哪些高校设立,同时系统会依据基于物品的协同过滤算法给用户推荐相似的专业数据