Files
forsetsystem/README.md

326 lines
8.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 中国企业员工缺勤分析与预测系统
## 项目简介
本项目面向企业人力资源管理与运营分析场景,围绕员工缺勤事件构建了一个集数据概览、影响因素分析、`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 月