304441c888eb7ac36b0a17a2256698c9338c2441
中国企业员工缺勤分析与预测系统
项目简介
本项目面向企业人力资源管理与运营分析场景,围绕员工缺勤事件构建了一个集数据概览、影响因素分析、JD-R 理论解释、风险预测、群体画像与可解释分析于一体的毕业设计系统。系统既关注“缺勤发生了什么”,也关注“为什么会缺勤”以及“如何进行干预”。
后端采用 Flask + scikit-learn + PyTorch,前端采用 Vue 3 + Element Plus + ECharts。当前实现同时包含传统机器学习模型、基于时序注意力融合的深度学习模型,以及 SHAP 全局/局部解释能力。
理论支撑
系统以 JD-R(Job Demands-Resources,工作要求-资源)模型作为解释员工缺勤的重要理论基础,并在代码中完成了落地:
- 工作要求维度:工作自主性、情绪劳动强度、时间压力感知、角色模糊度、工作家庭冲突
- 工作资源维度:上级支持、同事支持、技能多样性、职业发展机会、参与决策、组织公平感
- 个人资源维度:自我效能感、心理韧性、乐观程度
- 中介变量:工作倦怠、工作投入
- 复合指标:工作要求指数、工作资源指数、个人资源指数、
JD-R平衡度、倦怠风险指数、工作投入指数
这意味着系统不仅做统计和预测,还能从“高要求导致倦怠”“资源促进投入”的心理学视角解释缺勤风险。
功能模块
1. 数据概览
- 基础统计指标展示
- 月度缺勤趋势分析
- 星期分布分析
- 请假类型与原因分布分析
- 季节分布分析
2. 影响因素分析
- 特征重要性排序
- 相关性热力图
- 多维群体对比分析
3. JD-R 理论分析
- 工作要求、工作资源、个人资源三维度分析
- 工作倦怠与工作投入分布分析
- 健康损伤路径与激励路径分析
- 分组画像与风险分布分析
4. 缺勤预测与解释
- 单次缺勤时长预测
- 风险等级评估
- 多模型结果对比
SHAP局部解释与维度贡献展示
5. 员工画像
K-Means聚类结果展示- 群体画像分析
- 群体散点图可视化
技术栈
后端
- Python 3.11
- Flask 2.3.3
- Flask-CORS 4.0.0
- pandas 2.0.3
- numpy 1.24.3
- scikit-learn 1.3.0
- xgboost 1.7.6
- lightgbm 4.1.0
- PyTorch 2.6.0
前端
- Vue 3
- Vite
- Element Plus
- ECharts
- Axios
- Vue Router
项目结构
forsetsystem/
├── backend/
│ ├── api/ # 接口层
│ ├── core/ # 数据生成、特征工程、训练、聚类、可解释分析
│ ├── services/ # 业务服务层
│ ├── data/
│ │ └── raw/
│ │ └── china_enterprise_absence_events.csv
│ ├── models/ # 模型文件与训练工件
│ ├── outputs/ # 评估图与结果导出
│ ├── app.py # 后端入口
│ ├── config.py # 项目配置
│ └── requirements.txt
├── frontend/
│ ├── src/
│ │ ├── api/
│ │ ├── router/
│ │ ├── styles/
│ │ ├── views/
│ │ ├── App.vue
│ │ └── main.js
│ ├── package.json
│ └── vite.config.js
├── docs/ # 系统文档、论文文档与安装说明
└── README.md
环境要求
| 项目 | 要求 |
|---|---|
| 操作系统 | Windows 10 / Windows 11 |
| Python | 3.11 |
| Conda | Anaconda 或 Miniconda |
| Node.js | 16+ |
| pnpm | 8+ |
| CUDA | 建议与 PyTorch cu124 轮子匹配 |
安装部署
推荐使用 conda 虚拟环境,并优先安装官方 GPU 版 PyTorch。
1. 创建并激活 conda 环境
conda create -n forsetenv python=3.11 -y
conda activate forsetenv
2. 安装 PyTorch GPU 版
pip install torch==2.6.0 torchvision==0.21.0 torchaudio==2.6.0 --index-url https://download.pytorch.org/whl/cu124
3. 安装其余后端依赖
pip install Flask==2.3.3 Flask-CORS==4.0.0 python-dotenv==1.0.0
pip install pandas==2.0.3 numpy==1.24.3 scikit-learn==1.3.0 joblib==1.3.1
pip install xgboost==1.7.6 lightgbm==4.1.0
如需直接使用依赖文件,可在安装 GPU 版 PyTorch 后执行:
pip install -r backend/requirements.txt
4. 安装前端依赖
cd frontend
pnpm install
启动方式
1. 生成数据集
cd backend
python core/generate_dataset.py
2. 训练模型
python core/train_model.py
3. 启动后端
python app.py
后端默认地址:
http://127.0.0.1:5000
4. 启动前端
cd ..\frontend
npm run dev
前端默认地址:
http://127.0.0.1:5173
模型说明
当前训练产物中启用的模型包括:
random_forestgradient_boostingextra_treesxgboostlstm_mlp
其中:
- 传统树模型适合结构化特征建模、特征重要性排序和
SHAP解释 lstm_mlp是接口名称,当前内部实现为“时序注意力融合网络”,采用Transformer时序编码 + 静态特征门控融合- 深度学习模型使用
8步时间窗口,结合15个序列特征和13个静态特征完成预测
数据与训练信息
- 原始数据集规模:
12000条缺勤事件 - 员工覆盖数:
2575 - 企业覆盖数:
180 - 数据字段总数:
73 - 传统模型特征工程后总特征数:
89 - 当前筛选后进入传统模型的核心特征数:
22 - 当前训练元数据日期:
2026-04-03
常用路径
- 数据集文件:china_enterprise_absence_events.csv
- 配置文件:config.py
- 数据生成脚本:generate_dataset.py
- 特征工程脚本:model_features.py
- 深度学习脚本:deep_learning_model.py
JD-R服务:jdr_service.pySHAP分析器:shap_analysis.py
接口概览
数据概览
GET /api/overview/statsGET /api/overview/trendGET /api/overview/weekdayGET /api/overview/reasonsGET /api/overview/seasons
影响因素分析
GET /api/analysis/importanceGET /api/analysis/correlationGET /api/analysis/compare
缺勤预测
GET /api/predict/modelsGET /api/predict/model-infoPOST /api/predict/singlePOST /api/predict/comparePOST /api/predict/risk-classify
员工画像
GET /api/cluster/resultGET /api/cluster/profileGET /api/cluster/scatter
JD-R 理论分析
GET /api/jdr/dimensionsGET /api/jdr/burnout-engagementGET /api/jdr/path-analysisGET /api/jdr/profileGET /api/jdr/risk-distribution
SHAP 可解释分析
GET /api/shap/globalPOST /api/shap/localGET /api/shap/interactionGET /api/shap/dependence
文档目录
详细设计文档见:
常见问题
1. flask_cors 缺失
执行:
pip install Flask-CORS
2. xgboost 或 lightgbm 缺失
执行:
pip install xgboost==1.7.6 lightgbm==4.1.0
3. PyTorch 被安装成 CPU 版
请重新执行官方 GPU 安装命令:
pip install torch==2.6.0 torchvision==0.21.0 torchaudio==2.6.0 --index-url https://download.pytorch.org/whl/cu124
4. 如何确认当前使用的是 conda 环境
conda info --envs
where python
项目信息
- 作者:张硕
- 学校:河南农业大学软件学院
- 项目类型:本科毕业设计
- 完成时间:2026 年 4 月
Description
Languages
Python
72.6%
Vue
24.8%
CSS
1.3%
JavaScript
1.2%
HTML
0.1%