黄河科技学院本科毕业设计 任务书
工 学部 大数据与计算机应用 科教中心 计算机科学与技术 专业
2018 级普本1/专升本1班 学号 学生 指导教师
毕业设计题目
基于大数据的慕课平台课程学习数据行为分析可视化与个性化推荐
毕业设计工作内容与基本要求(目标、任务、途径、方法,应掌握的原始资料(数据)、参考资料(文献)以及设计技术要求、注意事项等)
一、设计的目标和任务
- 技术方面
(1)使用PyCharm、IDEA等工具进行代码编写。
(2)结合机器学习、深度学习等数据分析技术构建模型。
(3)使用知识图谱、Spark、Hadoop等技术进行数据可视化大屏分析
- 工作方面
(1)认真查阅相关文献资料,充分做好前期准备工作。
①到学校图书馆借阅机器学习和数据挖掘等方面的图书。
②从中国知网等网站查找相关论文 20 篇,重点阅读 10篇。
③通过查找相关课程视频,自主学习与本课题有关的知识。
(2)按照毕业论文(设计)相关文件要求独立完成毕业论文(设计)。
①完成课程推荐系统、可视化系统的设计与实现。
②撰写论文时,要有图表形象表达,要体现论文的主要特色。
二、设计途径和方法
(一) Selenium自动化Python爬虫工具采集慕课网课程课程数据、学习数据约80-100万条存入.csv文件作为数据集;
(二)使用pandas+numpy或MapReduce对数据进行数据清洗,生成最终的.csv文件并上传到hdfs;
(三)使用hive数仓技术建表建库,导入.csv数据集;
(四)离线分析采用hive_sql完成,实时分析利用Spark之Scala完成;
(五)统计指标使用sqoop导入mysql数据库;
(六)使用springboot+vue.js+echarts进行可视化大屏开发;
(七)使用协同过滤算法(基于用户/物品)、LSTM、SVD神经网络混合推荐模型、MLP模型等等进行个性化推荐。并进行参数优化、算法二次开发升级;
(八)使用卷积神经网络KNN、CNN实现课程流量预测;
(九)搭建springboot+vue.js前后端分离web系统进行个性化推荐界面、课程流量预测界面、知识图谱等实现;
三、应掌握的原始资料和技术
原始资料:
(一)慕课平台课程数据:
- 课程基本信息:包括课程名称、简介、教师信息、开课时间等。
- 学习者信息:包括注册信息、个人信息、学习偏好等。
- 学习行为数据:学习者的登录记录、观看视频时长、作业提交情况、论坛互动等。
(二)学习者反馈数据:
- 课程评价:学习者对课程的评分和评论。
- 学习效果反馈:学习者在课程结束后的测试成绩、证书获取情况等。
(三)相关教育政策与标准:
- 教育部门关于在线教育的政策文件。
- 国内外慕课平台的教学标准和评估体系。
(四)研究文献与案例:
- 国内外关于慕课、学习分析、个性化推荐的学术论文和报告。
- 成功的慕课平台案例分析和教育技术应用案例。
技术:
(一)大数据技术:
- 数据采集:能够高效地从慕课平台收集各种类型的数据。
- 数据存储与管理:使用分布式存储系统(如Hadoop HDFS)来存储和管理大规模数据。
- 数据处理与分析:掌握MapReduce、Spark等大数据处理框架进行数据分析。
(二)学习分析技术:
- 行为分析:通过统计分析和机器学习等方法分析学习者的行为模式。
- 可视化技术:使用数据可视化工具(如echarts、D3.js)将分析结果以图表形式展示。
- 预测模型:建立预测模型来预测学习者的未来表现和需求。
(三)个性化推荐技术:
- 推荐算法:熟悉协同过滤、内容推荐等个性化推荐算法。
- 推荐系统设计与实现:能够设计并实现一个针对慕课平台的个性化推荐系统。
(四)软件开发技术:
- 编程语言与工具:熟练掌握至少一门编程语言(如Python、Java),以及相关开发工具和框架。
- 数据库技术:了解关系型数据库和非关系型数据库的使用,以及数据库设计原则。
四、进度安排
第1周:查阅相关资料,完成文献综述。
第2周:结合课题要求,提交开题报告,并完成开题答辩。
第3~5周:进行系统分析、总体设计和详细设计。
第6~9周:实现系统编码、调试及软件测试。撰写毕业设计。
第10~12周:修改毕业设计至定稿,资格审查。
第13~14周:毕业设计答辩及资料归档。
五、参考文献
[1]尹旭熙.基于Hadoop和Spark的可扩展性化工类大数据分析系统设计[J].粘接,2021,46(06):81-83+93.
[2]李林国,查君琪,赵超等.基于Hadoop平台的大数据可视化分析实现与应用[J].西安文理学院学报(自然科学版),2022,25(03):53-58.
[3]杨志雄.大数据分析的机器学习算法研究[J].信息记录材料,2023,24(05):92-94.DOI:10.16009/j.cnki.cn13-1295/tq.2023.05.003.
[4]Ravesa A,Ahmad S S. Precision agriculture using IoT data analytics and machine learning[J]. Journal of King Saud University - Computer and Information Sciences,2022,34(8PB).
[5]Bernd S,Desiree K,Antonio G D, et al. Approach for machine learning based design of experiments for occupant simulation[J]. Frontiers in Future Transportation,2022.
[6]Kumar A,Sreenatha G A,Dubey K A, et al. Machine Learning Approaches and Applications in Applied Intelligence for Healthcare Data Analytics[M].CRC Press:2021-09-12.
[7]陈琦. 面向个性化课程推荐的深度学习方法研究[D].山东师范大学,2021.DOI:10.27280/d.cnki.gsdsu.2021.000635.
[8]卜南翔,徐述,王玉婷等.基于大数据平台的课程教学资源推荐系统应用探究[J].数码世界,2019(03):189.
[9]方思怡.标准知识图谱的技术路径与应用场景探讨[J].中国标准化,2023(11):49-55.
[10]郭芳清. 基于图神经网络的知识图谱推荐算法研究[D].大连理工大学,2022.DOI:10.26991/d.cnki.gdllu.2022.001269.
[11]郭婺,郭建,张劲松等.基于Python的网络爬虫的设计与实现[J].信息记录材料,2023,24(04):159-162.DOI:10.16009/j.cnki.cn13-1295/tq.2023.04.025.
[12]李明轩,李峰.人工智能时代知识图谱与深度学习的相互交融——评《知识图谱与深度学习》[J].中国科技论文,2023,18(02):240.
[13]汪娅.深度学习的认识论意蕴[J].哈尔滨学院学报,2022,43(12):12-16.
[14]魏胤真.基于计算机深度学习的个性化资源推荐算法研究[J].现代工业经济和信息化,2023,13(03):56-58.DOI:10.16525/j.cnki.14-1362/n.2023.03.020.
[15]韩厚畴. 基于深度学习的混合推荐算法研究[D].吉林大学,2022.DOI:10.27162/d.cnki.gjlin.2022.006503.
六、注意事项
(1)对于开发过程中遇到的问题注重自己查阅资料寻找解决方案,同时,多和导师沟通交流解决。
(2)寻找同类系统进行对比学习和参考,提高开发效率。
毕业设计时间: 2022年 12 月 19 日至 2023年 5 月 13 日
计划答辩时间: 2023年 5 月 13 日
工作任务与工作量要求:原则上查阅文献资料不少于12篇,其中外文资料不少于2篇;文献综述不少于3000字;毕业论文或设计说明书不少于8000字(同时提交有关图纸和附件)。毕业设计(论文)撰写规范及有关要求,请查阅《黄河科技学院本科毕业设计(论文)指导手册》。
专业教研室审批意见:
审批人(签字):
核心算法代码分享如下:
# -*- codeing = utf-8 -*-
# 创建图谱专用的json文件
import pandas as pd
import json
from db import db_util
d = db_util()
db, cursor = d.get_conn()
def build():
s_dict = {}
t_dict = {}
ret = []
ind1 = 10000
ind2 = 20000
ind3 = 30000
rind = 900000
sql = 'select * from tb_mooc'
df = pd.read_sql(sql, con=db)
for index, row in df.iterrows():
print(row['title'])
school = row['school']
teacher = row['teacher']
print(row['school'])
print(row['teacher'])
if school not in s_dict:
ind2 = ind2 + 1
s_dict[school] = ind2
if teacher not in t_dict:
ind3 = ind3 + 1
t_dict[teacher] = ind3
properties = {"name": row['title'], 'brief': row['brief'], 'status': row['status'], 'price':row['price']}
start = {'identity': index, 'labels':['课程'], 'properties':properties}
end = {'identity': ind2, 'labels':['高校'], 'properties':{"name": school}}
relationship = {"identity": rind, "start": index,"end": ind2,
"type": "type", "properties": {"name": "学校"}}
rind = rind + 1
segments = []
segments.append(dict(start=start, relationship=relationship, end=end))
end = {'identity': ind3, 'labels': ['老师'], 'properties': {"name": teacher}}
relationship = {"identity": rind, "start": index, "end": ind3,
"type": "type", "properties": {"name": "老师"}}
rind = rind + 1
segments.append(dict(start=start, relationship=relationship, end=end))
p = dict(segments=segments, length=1.0)
ret.append(dict(p=p, score=2))
json_str = json.dumps(ret, ensure_ascii=False)
with open('test.json', 'w', encoding='utf8') as f2:
# ensure_ascii=False才能输入中文,否则是Unicode字符
# indent=2 JSON数据的缩进,美观
json.dump(ret, f2, ensure_ascii=False, indent=2)
print(json_str)
print("end..")
if __name__ == '__main__':
build()