搭建完整的前后端分离架构,实现数据概览、预测分析、聚类分析等核心功能模块 详细版: feat: 初始化员工缺勤分析系统项目 - 后端:基于 Flask 搭建 RESTful API,包含数据概览、特征分析、预测模型、聚类分析四大模块 - 前端:基于 Vue.js 构建单页应用,实现 Dashboard、预测、聚类、因子分析等页面 - 模型:集成随机森林、XGBoost、LightGBM、Stacking 等多种机器学习模型 - 文档:完成需求规格说明、系统架构设计、接口设计、数据设计、UI原型设计等文档
6.7 KiB
6.7 KiB
基于多维特征挖掘的员工缺勤分析与预测系统
项目简介
本系统基于 UCI Absenteeism 数据集,利用机器学习算法对员工考勤数据进行深度分析,挖掘影响缺勤的多维度特征,构建缺勤预测模型,为企业人力资源管理提供科学、客观的决策支持。
功能特性
F01 数据概览与全局统计
- 基础统计指标展示(样本总数、员工总数、缺勤总时长等)
- 月度缺勤趋势分析
- 星期分布分析
- 缺勤原因分布分析
- 季节分布分析
F02 多维特征挖掘与影响因素分析
- 特征重要性排序(基于随机森林)
- 相关性热力图分析
- 群体对比分析(饮酒/吸烟/学历/子女等维度)
F03 员工缺勤风险预测
- 单次缺勤预测
- 风险等级评估(低/中/高)
- 模型性能展示(R²、MSE、RMSE、MAE)
F04 员工画像与群体聚类
- K-Means 聚类结果展示
- 员工群体雷达图
- 聚类散点图可视化
技术栈
后端
- Python 3.11
- Flask 2.3.3
- scikit-learn 1.3.0
- XGBoost 1.7.6
- LightGBM 4.1.0
- pandas 2.0.3
- numpy 1.24.3
前端
- Vue 3.4
- Element Plus 2.4
- ECharts 5.4
- Axios 1.6
- Vue Router 4.2
- Vite 5.0
环境要求
| 项目 | 要求 |
|---|---|
| 操作系统 | Windows 10/11、Linux、macOS |
| Python | 3.11 |
| Node.js | 16.0+ |
| Conda | Anaconda 或 Miniconda |
| pnpm | 8.0+ |
安装部署
1. 克隆项目
git clone <repository-url>
cd forsetsystem
2. 后端环境配置
创建 Conda 环境
conda create -n forsetenv python=3.11 -y
conda activate forsetenv
安装机器学习库(使用 conda-forge)
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
安装 Web 框架
pip install Flask==2.3.3 Flask-CORS==4.0.0 python-dotenv==1.0.0
验证安装
python -c "import pandas,numpy,sklearn,xgboost,lightgbm,flask;print('All libraries installed successfully')"
训练模型
cd backend
python core/train_model.py
3. 前端环境配置
cd frontend
pnpm install
运行说明
启动后端服务
conda activate forsetenv
cd backend
python app.py
后端服务运行在 http://localhost:5000
启动前端服务
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
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 | 群体对比分析 |
预测模块
| 接口 | 方法 | 说明 |
|---|---|---|
| /api/predict/single | POST | 单次预测 |
| /api/predict/model-info | GET | 模型信息 |
聚类模块
| 接口 | 方法 | 说明 |
|---|---|---|
| /api/cluster/result | GET | 聚类结果 |
| /api/cluster/profile | GET | 群体画像 |
| /api/cluster/scatter | GET | 散点数据 |
作者信息
- 作者:张硕
- 学校:河南农业大学软件学院
- 项目类型:本科毕业设计
- 完成时间:2026年3月
后续改进计划
模型优化
- 引入深度学习模型(如 LSTM)处理时序特征
- 增加模型解释性分析(SHAP 值可视化)
- 实现模型自动调参(Optuna/Hyperopt)
- 支持多模型集成预测
功能扩展
- 增加用户认证与权限管理
- 支持自定义数据集上传与分析
- 增加数据导出功能(Excel/PDF 报告)
- 实现预测结果的批量导出
- 增加数据可视化大屏展示
技术改进
- 后端迁移至 FastAPI 提升性能
- 引入 Redis 缓存常用查询结果
- 使用 Docker 容器化部署
- 增加 CI/CD 自动化测试与部署
- 前端状态管理迁移至 Pinia
数据层面
- 支持数据库存储(MySQL/PostgreSQL)
- 实现数据增量更新机制
- 增加数据质量检测与清洗功能