基于Spark高考推荐系统 高考信息报名院校推荐系统 协同过滤推荐算法 爬虫 大数据毕业设计(源码+文档)✅

毕业设计:2023-2024年计算机专业毕业设计选题汇总(建议收藏)

毕业设计:2023-2024年最新最全计算机专业毕设选题推荐汇总

🍅感兴趣的可以先收藏起来,点赞、关注不迷路,大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助同学们顺利毕业 。🍅

1、项目介绍

技术栈:
python语言 pyspark、 django框架、scrapy框架、vue框架、协同过滤推荐算法、HTML
基于用户+物品推荐院校、基于用户+物品推荐专业
阳光高考网—教育部高校招生阳光工程知道平台

通过scrapy爬虫框架抓取“阳光高考”网站上的大学数据(包括了学校名称、学校logo、简介、满意度、院系设置、录取规则、食宿条件、设立专业等字段)以及大学的专业(包括了学历层次、专业代码、所属门类、专业类别、介绍、相近专业、从业方向、统计了毕业生规模以及男女比例等信息)数据 
前台用户通过登陆注册后进入系统

2、项目界面

(1)高校信息库模块

在这里插入图片描述

(2)高校详情页面

在这里插入图片描述

(3)高校推荐模块

在这里插入图片描述

(4)专业信息库

在这里插入图片描述

(5)专业详情页面

在这里插入图片描述

(6)开设专业高校

在这里插入图片描述

(7)个性化推荐高校

在这里插入图片描述

(8)高考信息设置

在这里插入图片描述

(9)后台数据管理

在这里插入图片描述

3、项目说明

系统中各个模块的具体实现:

1. 数据抓取模块

该模块使用了Scrapy爬虫框架,通过访问“阳光高考”网站来抓取大学和专业相关数据。在抓取大学数据时,我们将获取学校名称、学校logo、简介、满意度、院系设置、录取规则、食宿条件、设立专业等字段;在抓取大学专业数据时,我们将获取学历层次、专业代码、所属门类、专业类别、介绍、相近专业、从业方向、统计了毕业生规模以及男女比例等信息。

2. 用户注册登录模块

该模块使用Django框架实现用户的注册和登录功能。在注册时,我们要求用户提供用户名、密码等必要信息,同时对用户输入进行合法性校验;在登录时,用户需要输入正确的用户名和密码才能成功登录系统。

3. 后台管理模块

该模块是系统管理员可以对系统中的数据进行管理操作的接口,包括大学和专业数据的增删改查。我们使用Django Admin框架实现后台管理功能。管理员登陆后,进入后台管理界面,就可以对系统中的数据进行增删改查的操作。

4. 高校信息查询模块

该模块是实现用户在高校名称关键词、高校所在地、学历层次等信息筛选出符合条件的国内高校的功能,该页面以卡片形式展示了高校信息。我们使用Vue+Element-Plus框架来实现前端页面渲染、数据展示和分页组件,使用Django框架来实现后端API接口。我们将20条数据为一页,以此来降低后端压力。

5. 专业信息查询模块

该模块是用户可以根据专业分类以及关键词等信息筛选出符合条件的大学专业数据的功能,该页面以表格形式展示了专业信息。我们同样使用Vue+Element-Plus框架来实现前端页面渲染、数据展示和分页组件,使用Django框架来实现后端API接口。

6. 个性化推荐高校和专业模块

该模块是根据用户在高考志愿填报模块所填写的预测成绩、喜欢的专业、喜欢的学校以及想去的省份所在地等信息,从数据库中查找出符合用户条件的高校以及专业数据,再个性化地推荐给用户的功能。我们使用基于物品的协同过滤算法实现系统的推荐功能,并使用Django框架实现后端API接口。

7. 高校详情模块

该模块是当用户查看某高校详情时,可以看到该高校的多种信息,比如院校简介、学校领导、周边环境、通讯地址、院校设置、重点实验室、重点学科、师资力量、录取条件、食宿条件等,还可以查看该学校设立的所有专业数据。该模块同样使用Vue+Element-Plus框架实现前端页面渲染、数据展示,使用Django框架实现后端API接口,并使用基于物品的协同过滤算法给用户推荐相似的高校数据。

8. 专业详情模块

该模块是当用户查看某专业的详情时,可以看到该专业的多种信息,比如学历层次、专业代码、所属门类,专业分类、专业介绍、统计信息包括该专业的毕业生规模和男女比例、相似专业、毕业后的从业方向。该模块同样使用Vue+Element-Plus框架实现前端页面渲染、数据展示,使用Django框架实现后端API接口,并使用基于物品的协同过滤算法给用户推荐相似的专业数据。

技术及功能关键词:
技术栈:
python语言 pyspark、 django框架、scrapy框架、vue框架、协同过滤推荐算法、HTML
基于用户+物品推荐院校、基于用户+物品推荐专业
阳光高考网—教育部高校招生阳光工程知道平台

通过scrapy爬虫框架抓取“阳光高考”网站上的大学数据(包括了学校名称、学校logo、简介、满意度、院系设置、录取规则、食宿条件、设立专业等字段)以及大学的专业(包括了学历层次、专业代码、所属门类、专业类别、介绍、相近专业、从业方向、统计了毕业生规模以及男女比例等信息)数据 
前台用户通过登陆注册后进入系统
管理员可在后台管理所有抓取到的大学及大学专业数据,以及用户填写的高考志愿意向数据
高校信息查询模块,用户可以根据高校名称关键词、高校所在地、学历层次等信息筛选出符合条件的国内高校,该页面以卡片形式展示了高校信息,其中包括了高校名称、高校LOGO、所在地、学历层次、主管部门以及高校评分等数据,分页组件以20条数据为一页,可大大降低后端压力
专业信息查询模块,用户可以根据专业分类以及关键词等信息筛选出符合条件的大学专业数据,该页面以表格形式展示了专业信息,其中包括专业名称、专业所属门类、专业所属类以及专业满意度等信息
个性化推荐高校和专业模块,这是根据用户在高考志愿填报模块所填写的预测成绩、喜欢的专业、喜欢的学校以及想去的省份所在地等信息,在数据库中查找出符合用户条件的高校以及专业数据,再个性化地推荐给用户;需要注意的是,当用户第一次访问该模块时,系统会检测用户是否已填写志愿,如果没有,必须填写后才能够推荐
当用户查看某高校详情时,可以看到该高校的多种信息,比如院校简介、学校领导、周边环境、通讯地址、院校设置、重点实验室、重点学科、师资力量、录取条件、食宿条件等,还可以查看该学校设立的所有专业数据,同时系统会依据基于物品的协同过滤算法给用户推荐相似的高校数据
当用户查看某专业的详情时,可以看到该专业的多种信息,比如学历层次、专业代码、所属门类,专业分类、专业介绍、统计信息包括该专业的毕业生规模和男女比例、相似专业、毕业后的从业方向。也可以看到该专业有哪些高校设立,同时系统会依据基于物品的协同过滤算法给用户推荐相似的专业数据

4、核心代码


from .models import *
from django.http.response import HttpResponse
from django.shortcuts import render
from django.http import JsonResponse
from datetime import datetime, time
from django.core.paginator import Paginator
from django.db.models import Q
from app.apps import AppConfig
from auth.models import UserInfo


def to_dict(l, exclude=tuple()):
    # 将数据库模型 变为 字典数据 的工具类函数
    def transform(v):
        if isinstance(v, datetime):
            return v.strftime("%Y-%m-%d %H:%M:%S")
        return v

    def _todict(obj):
        j = {
            k: transform(v)
            for k, v in obj.__dict__.items()
            if not k.startswith("_") and k not in exclude
        }
        return j

    return [_todict(i) for i in l]


def get_college_list(request):
    body = request.json
    pagesize = body.get("pagesize", 10)
    page = body.get("page", 1)
    exclude_fields = ["pagesize", "page", "total"]
    query = {k: v for k, v in body.items() if k not in exclude_fields and v}
    q = Q(**query)
    objs = College.objects.filter(q).order_by("id")
    paginator = Paginator(objs, pagesize)
    pg = paginator.page(page)
    result = list(pg.object_list)
    result = to_dict(result)
    return JsonResponse({"total": paginator.count, "records": result})


def get_content_recommend_colleges(request):
    # 基于物品推荐高校
    body = request.json
    id = body.get("id")
    topK = 10
    o = College.objects.get(pk=id)
    try:
        ids = AppConfig.recommendCollegesForCollege(o.id, topK)
        result = College.objects.filter(id__in=ids).order_by("?")
    except:
        result = College.objects.filter(location=o.location).order_by("?")
    return JsonResponse(to_dict(result), safe=False)


def get_user_recommend_colleges(request):
    # 基于用户填表推荐高校
    topK = 10
    user = request.user
    userinfo = UserInfo.objects.filter(user=user).first()
    q = Q()
    for i in userinfo.favour_location.split(", "):
        if not i:
            continue
        q |= Q(location__icontains=i)
    for i in userinfo.favour_college.split(", "):
        if not i:
            continue
        q |= Q(name__icontains=i)
    try:
        result = list(College.objects.filter(q).order_by("?")[:topK])
        assert len(result) > 0
    except:
        result = College.objects.order_by("?")[:topK]
    return JsonResponse(to_dict(result), safe=False)


def get_college_major_list(request):
    body = request.json
    id = body.get("id")
    o = College.objects.get(pk=id)
    pagesize = body.get("pagesize", 10)
    page = body.get("page", 1)
    exclude_fields = ["pagesize", "page", "total", "id"]
    query = {k: v for k, v in body.items() if k not in exclude_fields and v}
    q = Q(**query)
    objs = o.majors.filter(q).order_by("cat1", "cat2")
    paginator = Paginator(objs, pagesize)
    pg = paginator.page(page)
    result = list(pg.object_list)
    result = to_dict(result)
    return JsonResponse({"total": paginator.count, "records": result})


def get_college_detail(request):
    body = request.json
    id = body.get("id")
    o = College.objects.get(pk=id)
    CollegeHistory.objects.create(user=request.user, college=o)
    return JsonResponse(to_dict([o])[0])


def get_major_list(request):
    body = request.json
    pagesize = body.get("pagesize", 10)
    page = body.get("page", 1)
    exclude_fields = ["pagesize", "page", "total", "category"]
    query = {k: v for k, v in body.items() if k not in exclude_fields and v}
    q = Q(**query)
    if body.get("category"):
        cat = body["category"]
        q &= Q(cat1=cat) | Q(cat2=cat) | Q(zymc=cat)
    objs = Major.objects.filter(q).order_by("id")
    paginator = Paginator(objs, pagesize)
    pg = paginator.page(page)
    result = list(pg.object_list)
    result = to_dict(result)
    return JsonResponse({"total": paginator.count, "records": result})


def get_content_recommend_majors(request):
    # 基于物品推荐专业
    body = request.json
    id = body.get("id")
    o = Major.objects.get(pk=id)
    topK = 10
    try:
        ids = AppConfig.recommendMajorsForMajor(o.id, topK)
        result = Major.objects.filter(id__in=ids).order_by("?")
    except:
        result = Major.objects.filter(cat2=o.cat2).order_by("?")
    return JsonResponse(to_dict(result), safe=False)


def get_user_recommend_majors(request):
    # 基于用户填表推荐专业
    topK = 10
    user = request.user
    userinfo = UserInfo.objects.filter(user=user).first()
    q = Q()
    for i in userinfo.favour_major.split(", "):
        if not i:
            continue
        q |= Q(zymc__icontains=i)
    # for i in userinfo.favour_college.split(", "):
    #     if not i:
    #         continue
    #     q |= Q(colleges__name__icontains=i)
    try:
        result = Major.objects.filter(q).order_by("?")[:topK]
    except Exception as e:
        result = Major.objects.order_by("?")[:topK]
    return JsonResponse(to_dict(result), safe=False)


def get_major_college_list(request):
    body = request.json
    id = body.get("id")
    o = Major.objects.get(pk=id)
    pagesize = body.get("pagesize", 10)
    page = body.get("page", 1)
    exclude_fields = ["pagesize", "page", "total", "id"]
    query = {k: v for k, v in body.items() if k not in exclude_fields and v}
    q = Q(**query)
    objs = o.colleges.filter(q).order_by("-rate")
    paginator = Paginator(objs, pagesize)
    pg = paginator.page(page)
    result = list(pg.object_list)
    result = to_dict(result)
    return JsonResponse({"total": paginator.count, "records": result})


def get_major_college_locations(request):
    body = request.json
    id = body.get("id")
    o = Major.objects.get(pk=id)
    result = [i[0] for i in o.colleges.values_list("location").distinct()]
    return JsonResponse(result, safe=False)


def get_major_detail(request):
    body = request.json
    id = body.get("id")
    o = Major.objects.get(pk=id)
    MajorHistory.objects.create(user=request.user, major=o)
    o.simileZyList = to_dict(
        Major.objects.filter(
            zydm__in=(o.simileZyList and o.simileZyList.split("|")) or []
        ).all()
    )
    return JsonResponse(to_dict([o])[0])


def get_major_category(request):
    result = []
    for (cat1,) in Major.objects.values_list("cat1").distinct():
        item = dict(value=cat1, label=cat1, children=[])
        result.append(item)
        for (cat2,) in Major.objects.filter(cat1=cat1).values_list("cat2").distinct():
            item2 = dict(value=cat2, label=cat2, children=[])
            item["children"].append(item2)
            for (zymc,) in (
                Major.objects.filter(cat1=cat1, cat2=cat2)
                .values_list("zymc")
                .distinct()
            ):
                item2["children"].append(dict(value=zymc, label=zymc))
    return JsonResponse(result, safe=False)



5、源码获取

🍅由于篇幅限制,获取完整文章或源码、代做项目的,查看我的【用户名】、【专栏名称】、【顶部选题链接】就可以找到我啦🍅

感兴趣的可以先收藏起来,点赞、关注不迷路,下方查看👇🏻获取联系方式👇🏻

  • 8
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
大数据基于用户画像电影推荐系统是一个涉及Python、Spark和Hadoop等技术的复杂项目。在这个毕业码案例设计中,代码包含了多个部分的实现。 首先,Python作为主要的编程语言之一,负责数据的处理和分析。通过Python的数据处理库,我们可以对用户的个人画像数据进行清洗和整合,包括用户的年龄、性别、观影习惯等信息。同时,Python也可以用来编写推荐算法和模型评估的代码。 其次,Spark作为大数据处理和分析的引擎,在这个项目中起着重要的作用。我们可以利用Spark来处理海量的用户观影行为数据,进行分布式计算和数据处理,快速生成用户画像和推荐模型。Spark的机器学习库也可以用来构建推荐系统模型,根据用户的画像特征为其推荐电影。 最后,Hadoop作为大数据存储和管理的平台,负责存储用户的个人画像数据、电影信息数据以及用户观影行为数据。通过Hadoop分布式文件系统(HDFS)和MapReduce计算框架,可以实现数据的高效存储和处理。 在这个毕业码案例设计中,代码会包括数据预处理的代码、推荐算法的实现、模型评估的代码,以及与Hadoop和Spark的交互代码等。这些代码的编写将涉及到Python的数据处理和建模技术,Spark的分布式计算和机器学习技术,以及Hadoop的数据存储和管理技术。通过这些代码的设计和实现,可以构建一个完整的大数据用户画像电影推荐系统

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值