中国企业员工缺勤分析与预测系统

项目简介

本项目面向企业人力资源管理与运营分析场景,围绕员工缺勤事件构建了一个集数据概览、影响因素分析、JD-R 理论解释、风险预测、群体画像与可解释分析于一体的毕业设计系统。系统既关注“缺勤发生了什么”,也关注“为什么会缺勤”以及“如何进行干预”。

后端采用 Flask + scikit-learn + PyTorch,前端采用 Vue 3 + Element Plus + ECharts。当前实现同时包含传统机器学习模型、基于时序注意力融合的深度学习模型,以及 SHAP 全局/局部解释能力。

理论支撑

系统以 JD-RJob 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_forest
  • gradient_boosting
  • extra_trees
  • xgboost
  • lstm_mlp

其中:

  • 传统树模型适合结构化特征建模、特征重要性排序和 SHAP 解释
  • lstm_mlp 是接口名称,当前内部实现为“时序注意力融合网络”,采用 Transformer 时序编码 + 静态特征门控融合
  • 深度学习模型使用 8 步时间窗口,结合 15 个序列特征和 13 个静态特征完成预测

数据与训练信息

  • 原始数据集规模:12000 条缺勤事件
  • 员工覆盖数:2575
  • 企业覆盖数:180
  • 数据字段总数:73
  • 传统模型特征工程后总特征数:89
  • 当前筛选后进入传统模型的核心特征数:22
  • 当前训练元数据日期:2026-04-03

常用路径

接口概览

数据概览

  • GET /api/overview/stats
  • GET /api/overview/trend
  • GET /api/overview/weekday
  • GET /api/overview/reasons
  • GET /api/overview/seasons

影响因素分析

  • GET /api/analysis/importance
  • GET /api/analysis/correlation
  • GET /api/analysis/compare

缺勤预测

  • GET /api/predict/models
  • GET /api/predict/model-info
  • POST /api/predict/single
  • POST /api/predict/compare
  • POST /api/predict/risk-classify

员工画像

  • GET /api/cluster/result
  • GET /api/cluster/profile
  • GET /api/cluster/scatter

JD-R 理论分析

  • GET /api/jdr/dimensions
  • GET /api/jdr/burnout-engagement
  • GET /api/jdr/path-analysis
  • GET /api/jdr/profile
  • GET /api/jdr/risk-distribution

SHAP 可解释分析

  • GET /api/shap/global
  • POST /api/shap/local
  • GET /api/shap/interaction
  • GET /api/shap/dependence

文档目录

详细设计文档见:

常见问题

1. flask_cors 缺失

执行:

pip install Flask-CORS

2. xgboostlightgbm 缺失

执行:

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
No description provided
Readme 2.9 MiB
Languages
Python 72.6%
Vue 24.8%
CSS 1.3%
JavaScript 1.2%
HTML 0.1%