326 lines
8.0 KiB
Markdown
326 lines
8.0 KiB
Markdown
# 中国企业员工缺勤分析与预测系统
|
||
|
||
## 项目简介
|
||
|
||
本项目面向企业人力资源管理与运营分析场景,围绕员工缺勤事件构建了一个集数据概览、影响因素分析、`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
|
||
|
||
## 项目结构
|
||
|
||
```text
|
||
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 环境
|
||
|
||
```powershell
|
||
conda create -n forsetenv python=3.11 -y
|
||
conda activate forsetenv
|
||
```
|
||
|
||
### 2. 安装 PyTorch GPU 版
|
||
|
||
```powershell
|
||
pip install torch==2.6.0 torchvision==0.21.0 torchaudio==2.6.0 --index-url https://download.pytorch.org/whl/cu124
|
||
```
|
||
|
||
### 3. 安装其余后端依赖
|
||
|
||
```powershell
|
||
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` 后执行:
|
||
|
||
```powershell
|
||
pip install -r backend/requirements.txt
|
||
```
|
||
|
||
### 4. 安装前端依赖
|
||
|
||
```powershell
|
||
cd frontend
|
||
pnpm install
|
||
```
|
||
|
||
## 启动方式
|
||
|
||
### 1. 生成数据集
|
||
|
||
```powershell
|
||
cd backend
|
||
python core/generate_dataset.py
|
||
```
|
||
|
||
### 2. 训练模型
|
||
|
||
```powershell
|
||
python core/train_model.py
|
||
```
|
||
|
||
### 3. 启动后端
|
||
|
||
```powershell
|
||
python app.py
|
||
```
|
||
|
||
后端默认地址:
|
||
|
||
```text
|
||
http://127.0.0.1:5000
|
||
```
|
||
|
||
### 4. 启动前端
|
||
|
||
```powershell
|
||
cd ..\frontend
|
||
npm run dev
|
||
```
|
||
|
||
前端默认地址:
|
||
|
||
```text
|
||
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`
|
||
|
||
## 常用路径
|
||
|
||
- 数据集文件:[china_enterprise_absence_events.csv](D:/forsetsystem/backend/data/raw/china_enterprise_absence_events.csv)
|
||
- 配置文件:[config.py](D:/forsetsystem/backend/config.py)
|
||
- 数据生成脚本:[generate_dataset.py](D:/forsetsystem/backend/core/generate_dataset.py)
|
||
- 特征工程脚本:[model_features.py](D:/forsetsystem/backend/core/model_features.py)
|
||
- 深度学习脚本:[deep_learning_model.py](D:/forsetsystem/backend/core/deep_learning_model.py)
|
||
- `JD-R` 服务:[jdr_service.py](D:/forsetsystem/backend/services/jdr_service.py)
|
||
- `SHAP` 分析器:[shap_analysis.py](D:/forsetsystem/backend/core/shap_analysis.py)
|
||
|
||
## 接口概览
|
||
|
||
### 数据概览
|
||
|
||
- `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`
|
||
|
||
## 文档目录
|
||
|
||
详细设计文档见:
|
||
|
||
- [docs/README.md](D:/forsetsystem/docs/README.md)
|
||
- [09_环境配置与安装说明.md](D:/forsetsystem/docs/09_环境配置与安装说明.md)
|
||
|
||
## 常见问题
|
||
|
||
### 1. `flask_cors` 缺失
|
||
|
||
执行:
|
||
|
||
```powershell
|
||
pip install Flask-CORS
|
||
```
|
||
|
||
### 2. `xgboost` 或 `lightgbm` 缺失
|
||
|
||
执行:
|
||
|
||
```powershell
|
||
pip install xgboost==1.7.6 lightgbm==4.1.0
|
||
```
|
||
|
||
### 3. PyTorch 被安装成 CPU 版
|
||
|
||
请重新执行官方 GPU 安装命令:
|
||
|
||
```powershell
|
||
pip install torch==2.6.0 torchvision==0.21.0 torchaudio==2.6.0 --index-url https://download.pytorch.org/whl/cu124
|
||
```
|
||
|
||
### 4. 如何确认当前使用的是 conda 环境
|
||
|
||
```powershell
|
||
conda info --envs
|
||
where python
|
||
```
|
||
|
||
## 项目信息
|
||
|
||
- 作者:张硕
|
||
- 学校:河南农业大学软件学院
|
||
- 项目类型:本科毕业设计
|
||
- 完成时间:2026 年 4 月
|