当前位置: 首页 > news >正文

基于知识图谱的python个性化学习路径推荐系统项目源码

ji这毕业设计我真的会谢选题的时候看到基于知识图谱的个性化学习路径推荐系统觉得挺高大上结果是给自己挖了一个大坑前前后后折腾了快两周才跑通中间差点把电脑砸了。完整源码链接https://pan.quark.cn/s/1e54aa2ae950得到的结果展示看起来挺唬人的这个题目到底要干嘛吧其实就是搞一个知识图谱把各个知识点之间的前置关系理清楚然后根据学生已经会了什么、想学什么推荐出一条最优的学习路径。听起来不就是个带权有向图加个拓扑排序么我当时也是这么想的结果写起来各种他*的细节问题。数据生成这块我一开始用手写了几十个知识点和自己编的前置依赖关系想想就觉得累。42个知识点61条边手打的时候就在想我是不是脑子有病选了这个题。KNOWLEDGE_POINTS [ (1, Python环境搭建, 基础, 1, 安装Python解释器与IDE开发环境), (2, 变量与数据类型, 基础, 1, int、float、str、bool等基本类型), ... ] PREREQUISITES [ (1, 2), (1, 12), (2, 3), (2, 4), (2, 5), (2, 6), (2, 7), ... ]然后学生画像也得造假的不然没数据跑。我设计了5个不同水平的学生张明是学完基础的想搞数据科学赵雷刚入门啥都不会王芳是大佬只差几个高阶知识点——这tm不就是我身边同学的真实写照么。STUDENTS [ {id: 1, name: 张明, known: [1..12], targets: [22..27], prefer_cat: [数据科学], pace: 0.7}, {id: 4, name: 赵雷, known: [1,2,33], targets: [13..21,36], prefer_cat: [进阶,计算机基础], pace: 0.5}, ]写到导出csv的时候还遇到了编码问题中文写到csv里在excel打开全乱码后来发现要加encodingutf-8-sig才对不过为了代码统一我全都用了utf-8。接下来是知识图谱的核心部分用networkx建的图一开始没注意有向无环图这个约束随便加了几个环进去拓扑排序直接炸了——NetworkXUnfeasible报错我当时就傻了。查了半天才发现是我加依赖关系的时候不小心加了个环形依赖比如A依赖B、B依赖C、C又依赖A这谁顶得住啊。def build_knowledge_graph(): G nx.DiGraph() for kp in KNOWLEDGE_POINTS: G.add_node(kp[0], namekp[1], categorykp[2], difficultykp[3], descriptionkp[4]) for from_id, to_id in PREREQUISITES: G.add_edge(from_id, to_id, relation前置) return G后面长记性了每次构建完都调用nx.is_directed_acyclic_graph(G)检查一下有环就回去改数据改到吐。推荐算法这块我纠结了好久一开始想用最短路径但发现学习路径不是越短越好啊前置知识没学直接跳到目标知识点这不扯淡么。所以最后还是老老实实拓扑排序打分排序。def analyze_knowledge_gaps(self, known_set, target_set): needed set() for t in target_set: prereqs get_all_prerequisites(self.G, t) needed | prereqs needed | target_set gaps needed - known_set return gaps打分这部分我综合了几个因素是不是目标节点10分、是不是偏好的分类5分、难度匹配度和老知识的平均难度差不超过1就3分、还有这个节点影响多少后续知识0.5分一个。写完实测效果还不错最起码看起来像那么回事。def score_node(self, node, known_set, target_set, preferred_categories): score 0.0 if node in target_set: score 10.0 if preferred_categories and node_cat in preferred_categories: score 5.0 diff_gap abs(node_diff - avg_known_diff) if diff_gap 1: score 3.0 ...重头戏是可视化matplotlib这玩意真是又爱又恨。画知识图谱的时候那些节点挤在一起根本看不清标签调spring_layout的k参数和iterations调了一万遍。还有一个坑是SimHei字体我一开始没设字体画出来的中文全是方框查了才知道要加这行plt.rcParams[font.sans-serif] [SimHei] plt.rcParams[axes.unicode_minus] False记得axes.unicode_minus也要设False不然负号会显示乱码我也是查了半天才知道的。画图函数有好几个最难的是把推荐路径高亮显示在知识图谱上。一开始只高亮了节点看不出路径方向后来又加了边的高亮才顺眼。def draw_knowledge_graph(G, title知识图谱总览, filenameknowledge_graph.png, highlight_pathNone, highlight_nodesNone): ... if highlight_path: edges_in_path list(zip(highlight_path[:-1], highlight_path[1:])) nx.draw_networkx_edges(G, pos, edgelistedge_list, edge_color#FF1744, width3.5) nx.draw_networkx_nodes(G, pos, nodelisthighlight_path, node_color#FF1744)看看跑出来的图全局知识图谱42个节点分成基础“进阶”“数据科学”“Web开发”“工具”计算机基础六大类每种颜色不一样绿色基础、蓝色进阶、橙色数据科学、紫色Web开发还挺好看的。难度分布图上能看出来基础类难度集中在1-2级进阶和数据科学就散在3-5级了合理。学生对比图更直观张明已知12个目标6个缺口7个赵雷已知3个目标10个缺口20个——这兄弟任务艰巨啊预估要140天才能学完节奏系数才0.5。王芳就舒服了缺口才4个15天搞定。最满意的还是每个学生的个性化学习路径图已掌握知识用绿色圆点亮出来推荐路径用红色高亮箭头方向一看就懂。比如给李华推荐的路径是Linux基础→计算机网络基础→Flask基础→RESTful API→SQL数据库→Django基础→Flask数据库→Django认证安全这个顺序就很合理先补工具和基础再上Web框架。其实做完回头看这个系统核心就三个东西数据生成、图算法、可视化。networkx的ancestors和topological_sort是主力matplotlib负责出图中间那些打分的逻辑完全是自己瞎琢磨的。虽然过程痛苦但结果还行吧至少图表跑出来了数据也对得上。最后跑main.py的时候看到所有图表生成成功output文件夹里8张png那一刻还是挺有成就感的前几天的崩溃都值了。可以参考一下
http://www.zskr.cn/news/1407925.html

相关文章:

  • 抗体芯片助力凋亡、应激信号通路研究
  • 强人工智能的发展需要突破哪些技术瓶颈?
  • 天津包车价格最新行情:十佳排名与靠谱公司深度解析 - 米米Ada
  • 告别枯燥理论:用Ettercap在Kali Linux上实战ARP欺骗,5分钟抓取HTTP明文密码
  • Hot-48 旋转矩阵(确切说是方阵)
  • 零成本金融数据分析:AKShare开源工具完整指南,Python轻松获取全球市场数据
  • 华硕笔记本优化终极指南:G-Helper轻量级控制中心完整使用手册
  • 提取矩阵特定多行元素
  • Pearcleaner:macOS终极清理指南,5分钟释放30%磁盘空间
  • 为 OpenClaw 配置 Taotoken 作为后端 AI 提供方
  • 如何用ESP32构建智能物联网项目?从入门到实战的完整指南
  • Keras实战:构建孪生神经网络(Siamese Network)实现图像相似度精准比对
  • 从零构建AI智能体:n8n本地化部署与可视化自动化实战指南
  • 多路径RDMA传输中基于乱序度的智能丢包恢复方案OrderRE
  • 定制作业本为什么首选源头工厂?撕掉中间商差价,看清校园定制真实优势
  • 从零开始:用Python和PyTorch一步步实现MANO模型的手势3D坐标预测(附完整代码)
  • 量子退火优化集成学习训练空间剪枝:兼顾精度与多样性的新方法
  • 2026年 内蒙古防腐木厂家推荐榜单:防腐木凉亭/木屋/花箱/地板/围栏/庭院/长廊/栅栏/水平台及碳化木生态木优质品牌精选 - 品牌企业推荐师(官方)
  • 2026年5月26日随笔
  • Origin 2017 2018 从零到精通:完整安装、激活与配置实战指南
  • 2026论文全流程终极榜单:10款AI智能降重工具, 合规修正一路顺畅
  • 视频没流量的真相:模板决定爆款潜力,2026优质剪辑模板测评出炉
  • Windows隐私保护终极指南:5步配置智能Boss-Key一键隐藏工具
  • 西北金融服务 GEO 优化科普:3 分钟看懂金融 GEO 能不能做、怎么做
  • PyCharm版本控制实战:从Git配置到团队协作
  • logoncli.dll文件丢失找不到 免费下载方法分享
  • Arco AI —— 深度嵌入 Odoo 18 的 AI 中枢。
  • 【STATA实战】ARIMA模型自动化探索与批量建模指南
  • 群体智能优化算法驱动的多行程车辆路径问题优化算法【附代码】
  • EndNote进阶:解锁中文作者拼音姓名在英文参考文献中的完整显示