fix(training): patch lightgbm sklearn compatibility
This commit is contained in:
362
README.md
362
README.md
@@ -1,253 +1,279 @@
|
||||
# 基于多维特征挖掘的员工缺勤分析与预测系统
|
||||
# 中国企业员工缺勤分析与预测系统
|
||||
|
||||
## 项目简介
|
||||
|
||||
本系统基于 UCI Absenteeism 数据集,利用机器学习算法对员工考勤数据进行深度分析,挖掘影响缺勤的多维度特征,构建缺勤预测模型,为企业人力资源管理提供科学、客观的决策支持。
|
||||
本项目面向企业人力资源管理与运营分析场景,围绕员工缺勤事件构建了一个集数据分析、风险预测、群体画像与可视化展示于一体的毕业设计系统。系统支持缺勤趋势分析、影响因素挖掘、单次缺勤时长预测、多模型对比以及员工群体聚类展示。
|
||||
|
||||
## 功能特性
|
||||
后端采用 `Flask + scikit-learn + PyTorch`,前端采用 `Vue 3 + Element Plus + ECharts`。当前版本同时支持传统机器学习模型和 `LSTM+MLP` 深度学习模型。
|
||||
|
||||
### F01 数据概览与全局统计
|
||||
- 基础统计指标展示(样本总数、员工总数、缺勤总时长等)
|
||||
## 功能模块
|
||||
|
||||
### 1. 数据概览
|
||||
|
||||
- 基础统计指标展示
|
||||
- 月度缺勤趋势分析
|
||||
- 星期分布分析
|
||||
- 缺勤原因分布分析
|
||||
- 请假类型与原因分布分析
|
||||
- 季节分布分析
|
||||
|
||||
### F02 多维特征挖掘与影响因素分析
|
||||
- 特征重要性排序(基于随机森林)
|
||||
- 相关性热力图分析
|
||||
- 群体对比分析(饮酒/吸烟/学历/子女等维度)
|
||||
### 2. 影响因素分析
|
||||
|
||||
### F03 员工缺勤风险预测
|
||||
- 单次缺勤预测
|
||||
- 风险等级评估(低/中/高)
|
||||
- 模型性能展示(R²、MSE、RMSE、MAE)
|
||||
- 特征重要性排序
|
||||
- 相关性热力图
|
||||
- 多维群体对比分析
|
||||
|
||||
### F04 员工画像与群体聚类
|
||||
- K-Means 聚类结果展示
|
||||
- 员工群体雷达图
|
||||
- 聚类散点图可视化
|
||||
### 3. 缺勤预测
|
||||
|
||||
- 单次缺勤时长预测
|
||||
- 风险等级评估
|
||||
- 多模型结果对比
|
||||
- 传统模型与深度学习模型切换
|
||||
|
||||
### 4. 员工画像
|
||||
|
||||
- 聚类结果展示
|
||||
- 群体画像分析
|
||||
- 群体散点图可视化
|
||||
|
||||
## 技术栈
|
||||
|
||||
### 后端
|
||||
|
||||
- Python 3.11
|
||||
- Flask 2.3.3
|
||||
- scikit-learn 1.3.0
|
||||
- XGBoost 1.7.6
|
||||
- LightGBM 4.1.0
|
||||
- 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.4
|
||||
- Element Plus 2.4
|
||||
- ECharts 5.4
|
||||
- Axios 1.6
|
||||
- Vue Router 4.2
|
||||
- Vite 5.0
|
||||
|
||||
- Vue 3
|
||||
- Vite
|
||||
- Element Plus
|
||||
- ECharts
|
||||
- Axios
|
||||
- Vue Router
|
||||
|
||||
## 项目结构
|
||||
|
||||
```text
|
||||
forsetsystem/
|
||||
├── backend/
|
||||
│ ├── api/ # 接口层
|
||||
│ ├── core/ # 数据生成、特征工程、训练、聚类、深度学习
|
||||
│ ├── services/ # 业务服务层
|
||||
│ ├── data/
|
||||
│ │ └── raw/
|
||||
│ │ └── china_enterprise_absence_events.csv
|
||||
│ ├── models/ # 模型文件与训练工件
|
||||
│ ├── 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/11、Linux、macOS |
|
||||
| 操作系统 | Windows 10 / Windows 11 |
|
||||
| Python | 3.11 |
|
||||
| Node.js | 16.0+ |
|
||||
| Conda | Anaconda 或 Miniconda |
|
||||
| pnpm | 8.0+ |
|
||||
| Node.js | 16+ |
|
||||
| pnpm | 8+ |
|
||||
| CUDA | 建议与 PyTorch `cu124` 轮子匹配 |
|
||||
|
||||
## 安装部署
|
||||
|
||||
### 1. 克隆项目
|
||||
推荐使用 `conda` 虚拟环境,并优先安装官方 GPU 版 `PyTorch`。
|
||||
|
||||
```bash
|
||||
git clone <repository-url>
|
||||
cd forsetsystem
|
||||
```
|
||||
|
||||
### 2. 后端环境配置
|
||||
|
||||
#### 创建 Conda 环境
|
||||
### 1. 创建并激活 conda 环境
|
||||
|
||||
```powershell
|
||||
conda create -n forsetenv python=3.11 -y
|
||||
conda activate forsetenv
|
||||
```
|
||||
|
||||
#### 安装机器学习库(使用 conda-forge)
|
||||
### 2. 安装 PyTorch GPU 版
|
||||
|
||||
```powershell
|
||||
conda install -c conda-forge pandas=2.0.3 numpy=1.24.3 scikit-learn=1.3.0 xgboost=1.7.6 lightgbm=4.1.0 joblib=1.3.1 -y
|
||||
pip install torch==2.6.0 torchvision==0.21.0 torchaudio==2.6.0 --index-url https://download.pytorch.org/whl/cu124
|
||||
```
|
||||
|
||||
#### 安装 Web 框架
|
||||
### 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
|
||||
python -c "import pandas,numpy,sklearn,xgboost,lightgbm,flask;print('All libraries installed successfully')"
|
||||
pip install -r backend/requirements.txt
|
||||
```
|
||||
|
||||
#### 训练模型
|
||||
### 4. 安装前端依赖
|
||||
|
||||
```powershell
|
||||
cd backend
|
||||
python core/train_model.py
|
||||
```
|
||||
|
||||
### 3. 前端环境配置
|
||||
|
||||
```bash
|
||||
cd frontend
|
||||
pnpm install
|
||||
```
|
||||
|
||||
## 运行说明
|
||||
## 启动方式
|
||||
|
||||
### 启动后端服务
|
||||
### 1. 生成数据集
|
||||
|
||||
```powershell
|
||||
conda activate forsetenv
|
||||
cd backend
|
||||
python core/generate_dataset.py
|
||||
```
|
||||
|
||||
### 2. 训练模型
|
||||
|
||||
```powershell
|
||||
python core/train_model.py
|
||||
```
|
||||
|
||||
### 3. 启动后端
|
||||
|
||||
```powershell
|
||||
python app.py
|
||||
```
|
||||
|
||||
后端服务运行在 http://localhost:5000
|
||||
后端默认地址:
|
||||
|
||||
### 启动前端服务
|
||||
```text
|
||||
http://127.0.0.1:5000
|
||||
```
|
||||
|
||||
```bash
|
||||
cd frontend
|
||||
### 4. 启动前端
|
||||
|
||||
```powershell
|
||||
cd ..\frontend
|
||||
pnpm dev
|
||||
```
|
||||
|
||||
前端服务运行在 http://localhost:5173
|
||||
前端默认地址:
|
||||
|
||||
### 访问系统
|
||||
|
||||
打开浏览器访问 http://localhost:5173
|
||||
|
||||
## 项目结构
|
||||
|
||||
```
|
||||
forsetsystem/
|
||||
├── backend/ # 后端项目
|
||||
│ ├── api/ # API 接口层
|
||||
│ │ ├── overview_routes.py # 数据概览接口
|
||||
│ │ ├── analysis_routes.py # 影响因素分析接口
|
||||
│ │ ├── predict_routes.py # 预测接口
|
||||
│ │ └── cluster_routes.py # 聚类接口
|
||||
│ ├── services/ # 业务逻辑层
|
||||
│ ├── core/ # 核心算法层
|
||||
│ │ ├── preprocessing.py # 数据预处理
|
||||
│ │ ├── feature_mining.py # 特征挖掘
|
||||
│ │ ├── train_model.py # 模型训练
|
||||
│ │ └── clustering.py # 聚类分析
|
||||
│ ├── data/ # 数据存储
|
||||
│ ├── models/ # 模型存储
|
||||
│ ├── utils/ # 工具函数
|
||||
│ ├── app.py # 应用入口
|
||||
│ ├── config.py # 配置文件
|
||||
│ └── requirements.txt # 依赖清单
|
||||
│
|
||||
├── frontend/ # 前端项目
|
||||
│ ├── src/
|
||||
│ │ ├── api/ # API 调用
|
||||
│ │ ├── views/ # 页面组件
|
||||
│ │ ├── router/ # 路由配置
|
||||
│ │ ├── App.vue # 根组件
|
||||
│ │ └── main.js # 入口文件
|
||||
│ ├── index.html
|
||||
│ ├── package.json
|
||||
│ └── vite.config.js
|
||||
│
|
||||
├── data/ # 原始数据
|
||||
│ └── Absenteeism_at_work.csv
|
||||
│
|
||||
├── docs/ # 项目文档
|
||||
│ ├── 00_需求规格说明书.md
|
||||
│ ├── 01_系统架构设计.md
|
||||
│ ├── 02_接口设计文档.md
|
||||
│ ├── 03_数据设计文档.md
|
||||
│ └── 04_UI原型设计.md
|
||||
│
|
||||
└── README.md
|
||||
```text
|
||||
http://127.0.0.1:5173
|
||||
```
|
||||
|
||||
## API 接口
|
||||
## 模型说明
|
||||
|
||||
### 数据概览模块
|
||||
| 接口 | 方法 | 说明 |
|
||||
|------|------|------|
|
||||
| /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 | 群体对比分析 |
|
||||
- `random_forest`
|
||||
- `gradient_boosting`
|
||||
- `extra_trees`
|
||||
- `xgboost`
|
||||
- `lightgbm`
|
||||
- `lstm_mlp`
|
||||
|
||||
### 预测模块
|
||||
| 接口 | 方法 | 说明 |
|
||||
|------|------|------|
|
||||
| /api/predict/single | POST | 单次预测 |
|
||||
| /api/predict/model-info | GET | 模型信息 |
|
||||
其中:
|
||||
|
||||
### 聚类模块
|
||||
| 接口 | 方法 | 说明 |
|
||||
|------|------|------|
|
||||
| /api/cluster/result | GET | 聚类结果 |
|
||||
| /api/cluster/profile | GET | 群体画像 |
|
||||
| /api/cluster/scatter | GET | 散点数据 |
|
||||
- 传统模型适合结构化特征解释与特征重要性分析
|
||||
- `LSTM+MLP` 适合结合事件序列与静态特征进行预测
|
||||
|
||||
## 作者信息
|
||||
## 数据与训练文件
|
||||
|
||||
- **作者**:张硕
|
||||
- **学校**:河南农业大学软件学院
|
||||
- **项目类型**:本科毕业设计
|
||||
- **完成时间**:2026年3月
|
||||
常用路径如下:
|
||||
|
||||
## 后续改进计划
|
||||
- 数据集文件:[china_enterprise_absence_events.csv](D:/VScodeProject/forsetsystem/backend/data/raw/china_enterprise_absence_events.csv)
|
||||
- 配置文件:[config.py](D:/VScodeProject/forsetsystem/backend/config.py)
|
||||
- 数据生成脚本:[generate_dataset.py](D:/VScodeProject/forsetsystem/backend/core/generate_dataset.py)
|
||||
- 模型训练脚本:[train_model.py](D:/VScodeProject/forsetsystem/backend/core/train_model.py)
|
||||
- 深度学习脚本:[deep_learning_model.py](D:/VScodeProject/forsetsystem/backend/core/deep_learning_model.py)
|
||||
|
||||
### 模型优化
|
||||
- [ ] 引入深度学习模型(如 LSTM)处理时序特征
|
||||
- [ ] 增加模型解释性分析(SHAP 值可视化)
|
||||
- [ ] 实现模型自动调参(Optuna/Hyperopt)
|
||||
- [ ] 支持多模型集成预测
|
||||
## 接口概览
|
||||
|
||||
### 功能扩展
|
||||
- [ ] 增加用户认证与权限管理
|
||||
- [ ] 支持自定义数据集上传与分析
|
||||
- [ ] 增加数据导出功能(Excel/PDF 报告)
|
||||
- [ ] 实现预测结果的批量导出
|
||||
- [ ] 增加数据可视化大屏展示
|
||||
### 数据概览
|
||||
|
||||
### 技术改进
|
||||
- [ ] 后端迁移至 FastAPI 提升性能
|
||||
- [ ] 引入 Redis 缓存常用查询结果
|
||||
- [ ] 使用 Docker 容器化部署
|
||||
- [ ] 增加 CI/CD 自动化测试与部署
|
||||
- [ ] 前端状态管理迁移至 Pinia
|
||||
- `GET /api/overview/stats`
|
||||
- `GET /api/overview/trend`
|
||||
- `GET /api/overview/weekday`
|
||||
- `GET /api/overview/reasons`
|
||||
- `GET /api/overview/seasons`
|
||||
|
||||
### 数据层面
|
||||
- [ ] 支持数据库存储(MySQL/PostgreSQL)
|
||||
- [ ] 实现数据增量更新机制
|
||||
- [ ] 增加数据质量检测与清洗功能
|
||||
### 影响因素分析
|
||||
|
||||
## 参考资料
|
||||
- `GET /api/analysis/importance`
|
||||
- `GET /api/analysis/correlation`
|
||||
- `GET /api/analysis/compare`
|
||||
|
||||
- [UCI Machine Learning Repository - Absenteeism at work Data Set](https://archive.ics.uci.edu/ml/datasets/Absenteeism+at+work)
|
||||
- [Flask 官方文档](https://flask.palletsprojects.com/)
|
||||
- [Vue 3 官方文档](https://vuejs.org/)
|
||||
- [Element Plus 组件库](https://element-plus.org/)
|
||||
- [ECharts 图表库](https://echarts.apache.org/)
|
||||
### 缺勤预测
|
||||
|
||||
- `GET /api/predict/models`
|
||||
- `GET /api/predict/model-info`
|
||||
- `POST /api/predict/single`
|
||||
- `POST /api/predict/compare`
|
||||
|
||||
### 员工画像
|
||||
|
||||
- `GET /api/cluster/result`
|
||||
- `GET /api/cluster/profile`
|
||||
- `GET /api/cluster/scatter`
|
||||
|
||||
## 文档目录
|
||||
|
||||
详细设计文档见:
|
||||
|
||||
- [docs/README.md](D:/VScodeProject/forsetsystem/docs/README.md)
|
||||
- [09_环境配置与安装说明.md](D:/VScodeProject/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 年 3 月
|
||||
|
||||
Reference in New Issue
Block a user