中学生学业水平多维度分析与预警系统
本系统基于葡萄牙两所中学真实学业数据(UCI Student Performance Dataset),实现中学生学业成绩的多维度统计分析和机器学习考前预警。系统融合规则引擎与机器学习模型综合评分,在期末考试前对学业风险学生进行预警识别,辅助教师开展针对性干预。
项目封面

项目说明
中学生学业水平多维度分析与预警系统
项目名称
中学生学业水平多维度分析与预警系统
项目简介
本系统基于葡萄牙两所中学真实学业数据(UCI Student Performance Dataset),实现中学生学业成绩的多维度统计分析和机器学习考前预警。系统融合规则引擎与机器学习模型综合评分,在期末考试前对学业风险学生进行预警识别,辅助教师开展针对性干预。
功能模块
用户认证
- 用户登录与退出
- 新用户注册(注册默认为教师角色)
- 管理员 / 教师两种角色权限分离
- 密码 pbkdf2:sha256 加密存储
数据总览(仪表盘)
- 核心指标卡片:学生总数、平均期末成绩、及格率、高风险人数、中风险人数、待处理预警数
- 学期成绩趋势图:第一学期 → 第二学期 → 期末,按学科分列
- 风险等级饼图:高风险 / 中风险 / 低风险人数占比
- 成绩等级分布柱状图:优秀 / 良好 / 及格 / 不及格
- 学科对比图:平均分与高风险人数双轴对比
学生管理
- 学生列表分页浏览,默认按预警分降序排列
- 多条件筛选:学号或学校关键词、学科、风险等级
- 新增学生:表单录入全部特征字段,自动计算风险评分并生成预警
- 学生详情:基本信息、风险评估结果、预警记录
- 删除学生:同时清除关联预警记录
多维度分析
- 综合雷达图:学习投入、家庭支持、出勤情况、健康状况、学业稳定、成绩水平六维度归一化展示
- 成绩分布:数学和葡萄牙语两门学科的成绩区间分布直方图
- 家庭因素分析:母亲学历、父亲学历、家庭关系评分、父母是否同住、家庭规模,分别与平均成绩的关系
- 行为习惯分析:学习时间、缺勤次数、外出频率、家庭网络、恋爱状态,分别与平均成绩的关系
- 相关分析:12 项关键指标与期末成绩的皮尔逊相关系数排序
- 性别学科交叉分析:男 / 女在数学 / 葡萄牙语学科上的平均成绩与高风险率对比
学业预警
- 预警列表分页浏览,展示学号、学科、成绩、风险等级、预警标题、原因、状态、时间
- 按状态(待处理 / 已处理)和风险等级(高 / 中)筛选,下拉框切换即时生效
- 处理预警:填写处理备注,标记为已处理
- 重新生成预警:重新计算全部学生风险评分,清除旧预警并按最新结果重新生成
模型训练
- 两种算法可选:随机森林(Random Forest)、梯度提升(Gradient Boosting)
- 训练后自动刷新全部学生风险评分和预警记录
- 模型评估指标面板:准确率、精确率、召回率、F1、AUC
- 特征重要性排名图(中文标签)
- 训练历史记录表:历次训练的时间、算法、各指标、训练集大小
分析报告
- 自动生成综合分析报告,包含数据概览、关键影响因素、家庭因素摘要、行为因素摘要、预警模型信息、建议措施
- 支持浏览器打印
数据导入
- 从本地 CSV 文件重新导入 UCI 原始数据
- 导入后自动训练模型并刷新全部预警
- 管理员专属功能
用户管理
- 查看系统用户列表
- 新增用户(指定角色:管理员 / 教师)
- 管理员专属功能
操作日志
- 记录用户登录、退出、增删改等操作
- 含操作时间、用户名、操作类型、详情、IP 地址
- 分页浏览
- 管理员专属功能
预警评分机制
系统采用 规则引擎 + 机器学习模型 融合评分,仅使用考前特征(G1、G2 及行为指标),不依赖期末成绩 G3,实现考前预警。
- 规则评分(权重 40%):根据第二学期成绩低于及格线、成绩下滑趋势、历史挂科次数、缺勤次数、学习时间不足等规则累加
- 模型评分(权重 60%):随机森林 / 梯度提升分类器对考前特征预测的风险概率
- 风险等级:综合评分 ≥ 0.7 为高风险,≥ 0.4 为中风险,< 0.4 为低风险
- 期末成绩 G3 仅作为结果说明附加到预警原因中,不影响预警评分
数据来源
UCI Machine Learning Repository - Student Performance Data Set
| 文件 | 学科 | 记录数 | 说明 |
|---|---|---|---|
data/student-mat.csv | 数学(mat) | 395 条 | 葡萄牙 Gabriel Pereira 和 Mousinho da Silveira 两所中学学生数学课程数据 |
data/student-por.csv | 葡萄牙语(por) | 649 条 | 同上学校的葡萄牙语课程数据 |
共 1044 条课程记录。成绩满分 20 分,及格线 10 分。
标准版目录结构
zhongxuesheng-xueye-fenxi-yujing/
├── app.py # Flask 主应用,页面路由与 API 接口
├── config.py # 应用配置(数据库路径、模型路径、预警阈值、密钥)
├── constants.py # 业务常量(学科映射、必填/可选字段定义)
├── requirements.txt # Python 依赖清单
├── data/
│ ├── student-mat.csv # UCI 数学课程原始数据
│ └── student-por.csv # UCI 葡萄牙语课程原始数据
├── database/
│ ├── __init__.py
│ ├── schema.py # 数据库表结构与连接管理
│ └── academic.db # SQLite 数据库文件(运行后自动生成)
├── ml/
│ ├── __init__.py
│ ├── features.py # 特征工程(字段编码、转换、特征重要性提取)
│ ├── predictor.py # 风险预测(规则评分 + ML 评分融合)
│ └── train.py # 模型训练(随机森林 / 梯度提升)
├── models/
│ ├── warning_model.joblib # 训练好的分类模型(运行后自动生成)
│ └── label_encoders.joblib # 标签编码器(运行后自动生成)
├── scripts/
│ ├── __init__.py
│ ├── seed_data.py # 数据导入与初始化
│ └── test_system.py # 系统测试脚本
├── services/
│ ├── __init__.py
│ ├── analysis.py # 多维度分析业务逻辑(仪表盘统计、成绩分布、家庭因素、行为因素、相关分析、性别学科交叉)
│ ├── risk_service.py # 风险刷新与预警生成
│ └── student_schema.py # 学生数据校验与规范化
├── static/
│ ├── css/
│ │ └── style.css # 全局自定义样式
│ └── js/
│ ├── common.js # 通用工具(API 请求、风险标签、ECharts 初始化、时间格式化、提示消息)
│ ├── dashboard.js # 仪表盘图表渲染
│ ├── analysis.js # 多维分析图表渲染(支持 Tab 切换延迟渲染)
│ ├── students.js # 学生列表与新增交互
│ ├── student_detail.js # 学生详情页
│ ├── warnings.js # 预警列表与处理交互
│ ├── model.js # 模型训练交互
│ └── reports.js # 分析报告渲染
├── templates/
│ ├── base.html # 基础模板(导航栏、CDN 引入、闪现消息)
│ ├── login.html # 登录页
│ ├── register.html # 注册页
│ ├── dashboard.html # 仪表盘
│ ├── students.html # 学生管理
│ ├── student_detail.html # 学生详情
│ ├── analysis.html # 多维度分析
│ ├── warnings.html # 学业预警
│ ├── model.html # 模型训练
│ ├── reports.html # 分析报告
│ ├── users.html # 用户管理
│ ├── import.html # 数据导入
│ └── logs.html # 操作日志
├── 运行步骤必看/
│ └── window.md # Windows 运行说明
├── mac_run.sh # macOS / Linux 启动脚本
├── window_run.bat # Windows 启动脚本
├── 训练手册.md # 模型训练手册
└── 项目说明.md # 本文件
技术栈
| 类别 | 技术 |
|---|---|
| 后端框架 | Python 3.12 + Flask 3.0 |
| 数据库 | SQLite 3 |
| 前端 | HTML5 + Bootstrap 5.3 + ECharts 5.5 |
| 机器学习 | scikit-learn 1.5(随机森林 / 梯度提升分类) |
| 数据处理 | pandas 2.2 + numpy 1.26 |
| 模型持久化 | joblib 1.4 |
| 密码安全 | Werkzeug pbkdf2:sha256 |
运行环境
| 项目 | 要求 |
|---|---|
| Python 版本 | 3.12 |
| 操作系统 | Windows / macOS / Linux |
| 内存 | 建议 2GB 以上 |
| 磁盘空间 | 约 300MB(含 Python 依赖和数据库) |
| 浏览器 | Chrome / Firefox / Safari / Edge 现代版本 |
账号信息
| 角色 | 用户名 | 密码 |
|---|---|---|
| 管理员 | admin | admin123 |
| 教师 | teacher01 | teacher123 |
管理员可访问用户管理、数据导入、操作日志页面。注册新账号默认为教师角色。
技术分类
包含内容
适用人群
学习参考与二次开发
关于 AI源码
AI源码 专注优质项目源码分享,提供完整源码、详细文档与技术支持,助力源码设计与课程作业。
相关推荐
查看全部 →
城市交通流量预测与拥堵成因分析系统
是一个面向城市交通拥堵分析的 monorepo,覆盖计算机设计课题中的主要能力链路:

电商用户行为漏斗与CRO转化率优化分析
电商用户行为漏斗与CRO转化率优化分析(E-Commerce Funnel CRO)是一套面向电商运营的数据分析平台,覆盖从用户访问到最终购买的完整漏斗链路,提供多维诊断、统计检验、PIE 优先级矩阵与 XGBoost 购买预测等能力,帮助运营团队精准定位转化瓶颈并制定优化策略。

多组学癌症预后预测分析系统
基于 Flask 的 Web 应用,用于上传 TCGA 风格合并表、做特征与标签概览、Cox 预后风险评分与生存相关可视化。模型在本地训练后以 形式加载,不提供旧版演示数据或假模型兜底。

基于 Apriori 算法的中药配伍审查系统
本系统是一个基于经典 Apriori 关联规则挖掘算法的中药配伍审查平台,使用真实中医药处方数据集(PTM-TKDE2018),实现药材频繁项集挖掘、关联规则生成与配伍禁忌审查。

基于 Python 的城市共享单车骑行需求时空分析系统
本系统是一个基于 Python Flask 框架的城市共享单车骑行需求时空分析平台,使用 Oslo City Bike(奥斯陆城市自行车)开放数据,提供系统总览、时间维度分析、空间维度分析、站点运营分析、OD 起讫流动分析、骑行需求预测、综合分析报告等功能模块,适用于城市共享单车运营调度与骑行需求研究场景。

基于 Python 的短视频用户行为分析系统
基于快手 KuaiRec / KuaiRand 数据集的短视频推荐分析平台,提供用户行为分析、推荐偏差检测、内容运营洞察、图神经网络推荐等完整分析链路。