diff --git a/README.md b/README.md index 54e6fec..18e50e4 100644 --- a/README.md +++ b/README.md @@ -2,9 +2,21 @@ ## 项目简介 -本项目面向企业人力资源管理与运营分析场景,围绕员工缺勤事件构建了一个集数据分析、风险预测、群体画像与可视化展示于一体的毕业设计系统。系统支持缺勤趋势分析、影响因素挖掘、单次缺勤时长预测、多模型对比以及员工群体聚类展示。 +本项目面向企业人力资源管理与运营分析场景,围绕员工缺勤事件构建了一个集数据概览、影响因素分析、`JD-R` 理论解释、风险预测、群体画像与可解释分析于一体的毕业设计系统。系统既关注“缺勤发生了什么”,也关注“为什么会缺勤”以及“如何进行干预”。 -后端采用 `Flask + scikit-learn + PyTorch`,前端采用 `Vue 3 + Element Plus + ECharts`。当前版本同时支持传统机器学习模型和 `LSTM+MLP` 深度学习模型。 +后端采用 `Flask + scikit-learn + PyTorch`,前端采用 `Vue 3 + Element Plus + ECharts`。当前实现同时包含传统机器学习模型、基于时序注意力融合的深度学习模型,以及 `SHAP` 全局/局部解释能力。 + +## 理论支撑 + +系统以 `JD-R`(Job Demands-Resources,工作要求-资源)模型作为解释员工缺勤的重要理论基础,并在代码中完成了落地: + +- 工作要求维度:工作自主性、情绪劳动强度、时间压力感知、角色模糊度、工作家庭冲突 +- 工作资源维度:上级支持、同事支持、技能多样性、职业发展机会、参与决策、组织公平感 +- 个人资源维度:自我效能感、心理韧性、乐观程度 +- 中介变量:工作倦怠、工作投入 +- 复合指标:工作要求指数、工作资源指数、个人资源指数、`JD-R` 平衡度、倦怠风险指数、工作投入指数 + +这意味着系统不仅做统计和预测,还能从“高要求导致倦怠”“资源促进投入”的心理学视角解释缺勤风险。 ## 功能模块 @@ -22,16 +34,23 @@ - 相关性热力图 - 多维群体对比分析 -### 3. 缺勤预测 +### 3. `JD-R` 理论分析 + +- 工作要求、工作资源、个人资源三维度分析 +- 工作倦怠与工作投入分布分析 +- 健康损伤路径与激励路径分析 +- 分组画像与风险分布分析 + +### 4. 缺勤预测与解释 - 单次缺勤时长预测 - 风险等级评估 - 多模型结果对比 -- 传统模型与深度学习模型切换 +- `SHAP` 局部解释与维度贡献展示 -### 4. 员工画像 +### 5. 员工画像 -- 聚类结果展示 +- `K-Means` 聚类结果展示 - 群体画像分析 - 群体散点图可视化 @@ -64,12 +83,13 @@ forsetsystem/ ├── backend/ │ ├── api/ # 接口层 -│ ├── core/ # 数据生成、特征工程、训练、聚类、深度学习 +│ ├── core/ # 数据生成、特征工程、训练、聚类、可解释分析 │ ├── services/ # 业务服务层 │ ├── data/ │ │ └── raw/ │ │ └── china_enterprise_absence_events.csv │ ├── models/ # 模型文件与训练工件 +│ ├── outputs/ # 评估图与结果导出 │ ├── app.py # 后端入口 │ ├── config.py # 项目配置 │ └── requirements.txt @@ -167,7 +187,7 @@ http://127.0.0.1:5000 ```powershell cd ..\frontend -pnpm dev +npm run dev ``` 前端默认地址: @@ -178,29 +198,39 @@ http://127.0.0.1:5173 ## 模型说明 -当前系统支持以下模型类型: +当前训练产物中启用的模型包括: - `random_forest` - `gradient_boosting` - `extra_trees` - `xgboost` -- `lightgbm` - `lstm_mlp` 其中: -- 传统模型适合结构化特征解释与特征重要性分析 -- `LSTM+MLP` 适合结合事件序列与静态特征进行预测 +- 传统树模型适合结构化特征建模、特征重要性排序和 `SHAP` 解释 +- `lstm_mlp` 是接口名称,当前内部实现为“时序注意力融合网络”,采用 `Transformer` 时序编码 + 静态特征门控融合 +- 深度学习模型使用 `8` 步时间窗口,结合 `15` 个序列特征和 `13` 个静态特征完成预测 -## 数据与训练文件 +## 数据与训练信息 -常用路径如下: +- 原始数据集规模:`12000` 条缺勤事件 +- 员工覆盖数:`2575` +- 企业覆盖数:`180` +- 数据字段总数:`73` +- 传统模型特征工程后总特征数:`89` +- 当前筛选后进入传统模型的核心特征数:`22` +- 当前训练元数据日期:`2026-04-03` -- 数据集文件:[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) +## 常用路径 + +- 数据集文件:[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) ## 接口概览 @@ -224,6 +254,7 @@ http://127.0.0.1:5173 - `GET /api/predict/model-info` - `POST /api/predict/single` - `POST /api/predict/compare` +- `POST /api/predict/risk-classify` ### 员工画像 @@ -231,12 +262,27 @@ http://127.0.0.1:5173 - `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:/VScodeProject/forsetsystem/docs/README.md) -- [09_环境配置与安装说明.md](D:/VScodeProject/forsetsystem/docs/09_环境配置与安装说明.md) +- [docs/README.md](D:/forsetsystem/docs/README.md) +- [09_环境配置与安装说明.md](D:/forsetsystem/docs/09_环境配置与安装说明.md) ## 常见问题 @@ -276,4 +322,4 @@ where python - 作者:张硕 - 学校:河南农业大学软件学院 - 项目类型:本科毕业设计 -- 完成时间:2026 年 3 月 +- 完成时间:2026 年 4 月 diff --git a/backend/core/clustering.py b/backend/core/clustering.py index d7ad066..a0a0c7c 100644 --- a/backend/core/clustering.py +++ b/backend/core/clustering.py @@ -76,6 +76,8 @@ class KMeansAnalyzer: if self.model is None or self.n_clusters != n_clusters: self.fit(n_clusters) df = get_clean_data().reset_index(drop=True) + centers = self.scaler.inverse_transform(self.model.cluster_centers_) + names = self._generate_cluster_names(centers) if x_axis not in df.columns: x_axis = '月均加班时长' if y_axis not in df.columns: @@ -102,23 +104,67 @@ class KMeansAnalyzer: '3': '#E8684A', '4': '#6DC8EC', }, + 'cluster_names': { + str(idx): names.get(idx, f'群体{idx + 1}') + for idx in range(self.n_clusters) + }, } def _generate_cluster_names(self, centers): - names = {} + base_names = {} for idx, center in enumerate(centers): _, tenure, overtime, commute, bmi, absence = center if overtime > 38 and commute > 55 and absence > 8: - names[idx] = '高压通勤型' + base_names[idx] = '高压通勤型' elif bmi > 27 and absence > 8: - names[idx] = '健康波动型' + base_names[idx] = '健康波动型' elif tenure > 8 and absence < 6: - names[idx] = '稳定低风险型' + base_names[idx] = '稳定低风险型' elif overtime > 28 and absence > 7: - names[idx] = '轮班负荷型' + base_names[idx] = '轮班负荷型' else: - names[idx] = f'群体{idx + 1}' - return names + base_names[idx] = f'群体{idx + 1}' + return self._deduplicate_cluster_names(base_names, centers) + + def _deduplicate_cluster_names(self, names, centers): + grouped = {} + for idx, name in names.items(): + grouped.setdefault(name, []).append(idx) + + deduplicated = names.copy() + for name, indices in grouped.items(): + if len(indices) == 1: + continue + + order = self._build_duplicate_order(indices, centers) + suffixes = self._suffix_candidates(name) + for rank, idx in enumerate(order): + suffix = suffixes[rank] if rank < len(suffixes) else f'{rank + 1}' + deduplicated[idx] = f'{name}{suffix}' + return deduplicated + + def _build_duplicate_order(self, indices, centers): + return sorted( + indices, + key=lambda idx: ( + centers[idx][5], # 缺勤时长 + centers[idx][2], # 加班 + centers[idx][1], # 司龄 + centers[idx][3], # 通勤 + centers[idx][4], # BMI + centers[idx][0], # 年龄 + ), + reverse=True, + ) + + def _suffix_candidates(self, name): + suffix_map = { + '高压通勤型': ['-高风险组', '-关注组', '-观察组'], + '健康波动型': ['-重点关注组', '-预警组', '-观察组'], + '稳定低风险型': ['-资深组', '-成熟组', '-稳健组'], + '轮班负荷型': ['-高负荷组', '-轮班组', '-强化组'], + } + return suffix_map.get(name, [f'({idx})' for idx in range(1, 10)]) def _generate_description(self, name): descriptions = { @@ -127,6 +173,9 @@ class KMeansAnalyzer: '稳定低风险型': '司龄较长,缺勤水平稳定且偏低。', '轮班负荷型': '排班和工作负荷较重,缺勤风险较高。', } + for key, description in descriptions.items(): + if name.startswith(key): + return description return descriptions.get(name, '常规员工群体。') diff --git a/docs/00_需求规格说明书.md b/docs/00_需求规格说明书.md index db55d09..719758a 100644 --- a/docs/00_需求规格说明书.md +++ b/docs/00_需求规格说明书.md @@ -8,13 +8,16 @@ ### 1.2 项目背景 -在企业人力资源管理中,员工缺勤不仅影响排班与生产效率,也会对团队稳定性、运营成本和服务质量造成影响。传统方式往往依赖人工统计与经验判断,难以及时识别风险。为提升企业对缺勤行为的洞察能力,本项目设计并实现一个面向企业管理场景的缺勤分析与预测系统,通过数据统计、特征分析、风险预测和员工画像等功能,为管理者提供辅助决策支持。 +在企业人力资源管理中,员工缺勤不仅影响排班、生产效率和运营成本,也会影响团队稳定性与服务质量。传统缺勤管理往往依赖人工统计和经验判断,难以及时识别高风险群体,更难解释缺勤背后的深层原因。 + +为提升企业对缺勤行为的洞察能力,本项目设计并实现一个面向企业管理场景的缺勤分析与预测系统。系统以中国企业模拟数据集为基础,结合统计分析、机器学习预测、聚类画像与 `JD-R`(工作要求-资源)理论解释,为管理者提供“现象识别 + 风险预测 + 原因解释 + 干预启发”的辅助决策支持。 ### 1.3 项目目标 - 实现缺勤数据的全局统计与可视化展示 - 分析影响缺勤时长的关键因素 -- 提供单次缺勤风险预测能力 +- 从 `JD-R` 理论视角解释员工缺勤的心理学驱动机制 +- 提供单次缺勤时长预测与风险评估能力 - 基于聚类结果构建员工群体画像 - 形成一套完整的毕业设计系统与配套论文材料 @@ -30,6 +33,7 @@ - 查看缺勤整体趋势和分布结构 - 分析不同因素对缺勤时长的影响 +- 通过 `JD-R` 理论理解“为什么员工会缺勤” - 输入关键因素并预测单次缺勤风险 - 查看员工群体画像与典型群体差异 - 在毕业设计答辩中展示系统界面与分析结果 @@ -51,16 +55,25 @@ - 提供多维度群体对比分析 - 支持从行业、班次、岗位序列、婚姻状态、慢性病史等维度查看平均缺勤差异 -### 3.3 缺勤预测模块 +### 3.3 `JD-R` 理论分析模块 + +- 展示工作要求、工作资源、个人资源三维度统计结果 +- 展示工作倦怠与工作投入分布 +- 展示健康损伤路径与激励路径的关联分析 +- 支持按行业等维度查看 `JD-R` 画像 +- 展示风险等级分布与 `JD-R` 平衡状态 + +### 3.4 缺勤预测模块 - 支持输入核心业务因子进行缺勤时长预测 -- 支持显示风险等级与置信度 +- 支持显示风险等级、风险概率与置信度 - 支持多模型结果对比 -- 支持自动选择较优模型 +- 支持默认推荐较优模型 +- 支持单次预测结果的 `SHAP` 局部解释 -### 3.4 员工画像模块 +### 3.5 员工画像模块 -- 支持 K-Means 聚类分析 +- 支持 `K-Means` 聚类分析 - 展示群体雷达图 - 展示聚类散点图 - 展示各群体人数、占比和文字说明 @@ -83,7 +96,7 @@ - 前后端模块划分清晰 - 数据生成、训练、服务和展示逻辑相互独立 -- 文档和代码保持一致 +- 理论文档、接口文档与代码实现保持一致 ### 4.4 安全性需求 @@ -94,22 +107,25 @@ - 每条数据代表一次员工缺勤事件 - 预测目标为缺勤时长(小时) -- 风险等级划分规则: +- 系统展示层使用三档风险划分: - 低风险:缺勤时长小于 4 小时 - 中风险:缺勤时长 4 至 8 小时 - 高风险:缺勤时长大于 8 小时 +- `JD-R` 理论解释以“工作要求高、资源不足、倦怠上升、投入下降”作为重要分析逻辑 ## 6. 约束条件 - 系统采用前后端分离架构 - 后端基于 Flask - 前端基于 Vue 3 与 Element Plus -- 训练数据采用项目内部生成的企业场景数据 +- 训练数据采用项目内部生成的中国企业场景模拟数据 +- 深度学习模型当前采用时序注意力融合网络,接口名称保留为 `lstm_mlp` ## 7. 验收标准 - 系统可正常启动并访问所有页面 - 各模块接口能够正确返回数据 -- 预测模块可以返回缺勤时长与风险等级 -- 影响因素分析与聚类页面可正常展示图表 +- 预测模块可以返回缺勤时长、风险等级和解释结果 +- `JD-R` 理论分析页面可正常展示维度图表与路径分析 +- 聚类与因素分析页面可正常展示图表 - 文档能够支撑毕业设计提交和答辩展示 diff --git a/docs/01_系统架构设计.md b/docs/01_系统架构设计.md index 2608d0c..6529cd5 100644 --- a/docs/01_系统架构设计.md +++ b/docs/01_系统架构设计.md @@ -6,13 +6,13 @@ - 前端:Vue 3 + Vue Router + Element Plus + ECharts - 后端:Flask + Pandas + Scikit-learn + PyTorch + Joblib -- 数据层:CSV 数据文件 + 模型文件 +- 数据层:CSV 数据文件 + 模型文件 + 训练元数据 整体架构分为四层: 1. 表现层:负责页面展示、表单交互和图表可视化 2. 接口层:负责 HTTP 路由转发与请求响应 -3. 业务层:负责数据统计、特征分析、预测和聚类逻辑 +3. 业务层:负责数据统计、特征分析、`JD-R` 解释、预测和聚类逻辑 4. 数据与模型层:负责原始数据、清洗数据、模型文件和训练元数据 ## 2. 前端架构设计 @@ -21,6 +21,7 @@ - `Dashboard.vue`:数据概览页 - `FactorAnalysis.vue`:影响因素分析页 +- `JDRAnalysis.vue`:`JD-R` 理论分析页 - `Prediction.vue`:缺勤预测页 - `Clustering.vue`:员工画像页 @@ -30,6 +31,7 @@ - 图表渲染 - 表单输入与结果展示 - 接口调用与状态管理 +- 将 `JD-R` 理论指标、路径关系与 `SHAP` 结果可视化 ## 3. 后端架构设计 @@ -39,56 +41,64 @@ - `analysis_routes.py` - `predict_routes.py` - `cluster_routes.py` +- `jdr_routes.py` +- `shap_routes.py` ### 3.2 服务层 - `data_service.py`:负责概览统计 - `analysis_service.py`:负责特征重要性与群体对比 -- `predict_service.py`:负责模型加载与预测输出 +- `predict_service.py`:负责模型加载、预测输出与风险分类 - `cluster_service.py`:负责聚类结果组织 +- `jdr_service.py`:负责 `JD-R` 理论指标、路径和画像分析 +- `shap_service.py`:负责全局/局部可解释分析结果封装 ### 3.3 核心算法层 -- `generate_dataset.py`:生成企业缺勤事件数据集 +- `generate_dataset.py`:生成中国企业缺勤事件数据集并补充 `JD-R` 基础维度 - `preprocessing.py`:数据清洗与预处理 -- `model_features.py`:特征构建与预测输入映射 -- `train_model.py`:模型训练与评估 -- `deep_learning_model.py`:LSTM+MLP 深度学习训练与推理 +- `model_features.py`:特征构建、`JD-R` 复合指标计算与预测输入映射 +- `train_model.py`:传统模型训练与评估 +- `deep_learning_model.py`:时序注意力融合深度学习模型训练与推理 - `feature_mining.py`:相关性分析与群体对比 -- `clustering.py`:K-Means 聚类分析 +- `clustering.py`:`K-Means` 聚类分析 +- `shap_analysis.py`:基于 `SHAP` 的全局、局部与交互解释分析 ## 4. 数据流设计 ### 4.1 训练流程 -1. 生成企业缺勤事件数据集 +1. 生成中国企业缺勤事件数据集 2. 加载并清洗数据 -3. 构建衍生特征 -4. 进行标签编码和特征筛选 -5. 训练多种模型并评估性能 +3. 补充 `JD-R` 理论基础维度 +4. 构建衍生特征与 `JD-R` 复合指标 +5. 进行编码、特征筛选与模型训练 6. 保存模型、特征信息和训练元数据 其中深度学习路径采用: -- `LSTM` 处理员工最近多次缺勤事件构成的时间窗口序列 -- `MLP` 处理员工静态属性特征 -- 融合层输出缺勤时长回归结果 +- `8` 步时间窗口组织员工缺勤事件序列 +- 时序分支编码 `15` 个事件/上下文特征 +- 静态分支编码 `13` 个员工稳定属性特征 +- `Transformer` 编码 + 门控融合输出缺勤时长回归结果 ### 4.2 预测流程 1. 前端输入核心预测字段 2. 后端构建完整预测样本 3. 自动补齐默认字段 -4. 执行特征工程和编码 +4. 执行特征工程、`JD-R` 指标构建和编码 5. 加载模型进行预测 -6. 返回缺勤时长、风险等级、模型名称和置信度 +6. 返回缺勤时长、风险等级、风险概率、模型名称和置信度 +7. 调用 `SHAP` 生成局部解释结果 ### 4.3 分析流程 1. 读取清洗后的数据 -2. 计算统计指标或相关关系 -3. 组织成前端图表所需结构 -4. 返回 JSON 数据供前端展示 +2. 计算统计指标、相关关系与群体差异 +3. 按 `JD-R` 理论聚合工作要求、工作资源、个人资源、倦怠与投入 +4. 组织成前端图表所需结构 +5. 返回 JSON 数据供前端展示 ## 5. 文件组织结构 @@ -98,6 +108,7 @@ backend/ core/ data/ models/ + outputs/ services/ app.py @@ -127,12 +138,13 @@ frontend/ - 适合传统机器学习建模 - 提供随机森林、GBDT、Extra Trees 等成熟算法 +- 便于输出特征重要性并配合 `SHAP` 解释 ### 6.4 PyTorch -- 用于实现 LSTM+MLP 深度学习模型 -- 支持将时序特征与静态特征进行融合建模 -- 便于在论文中增加深度学习对比实验内容 +- 用于实现深度学习时序建模 +- 支持 `Transformer` 编码与静态特征门控融合 +- 便于在论文中增加时序预测对比实验内容 ## 7. 部署方式 @@ -144,6 +156,6 @@ frontend/ - 结构清晰,便于答辩说明 - 前后端职责明确 -- 支持快速展示图表与预测效果 -- 支持后续扩展为数据库或更复杂模型架构 -- 同时支持传统机器学习模型与深度学习模型的实验对比 +- 同时支持统计、预测、聚类和理论解释 +- 支持 `SHAP` 全局与局部可解释分析 +- 构成“数据生成 - 特征工程 - 理论解释 - 预测决策”的闭环 diff --git a/docs/02_接口设计文档.md b/docs/02_接口设计文档.md index 7ea8033..d54d3a7 100644 --- a/docs/02_接口设计文档.md +++ b/docs/02_接口设计文档.md @@ -64,7 +64,7 @@ - URL:`/api/analysis/importance` - 方法:`GET` -- 参数:`model`,可选 +- 参数:`model`,可选,默认 `random_forest` - 说明:返回模型特征重要性排序 ### 3.2 获取相关性矩阵 @@ -88,9 +88,42 @@ - `marital_status` - `chronic_disease` -## 4. 缺勤预测接口 +## 4. `JD-R` 理论分析接口 -### 4.1 单次预测 +### 4.1 获取三维度分布 + +- URL:`/api/jdr/dimensions` +- 方法:`GET` +- 说明:返回工作要求、工作资源、个人资源与 `JD-R` 平衡度统计结果 + +### 4.2 获取倦怠与投入分析 + +- URL:`/api/jdr/burnout-engagement` +- 方法:`GET` +- 说明:返回工作倦怠、工作投入分布及其与缺勤时长的关联指标 + +### 4.3 获取双路径分析 + +- URL:`/api/jdr/path-analysis` +- 方法:`GET` +- 说明:返回健康损伤路径与激励路径的相关分析结果 + +### 4.4 获取分组画像 + +- URL:`/api/jdr/profile` +- 方法:`GET` +- 参数:`dimension`,可选,默认 `所属行业` +- 说明:返回按指定维度分组后的 `JD-R` 画像 + +### 4.5 获取风险分布 + +- URL:`/api/jdr/risk-distribution` +- 方法:`GET` +- 说明:返回低、中、高风险事件分布 + +## 5. 缺勤预测接口 + +### 5.1 单次预测 - URL:`/api/predict/single` - 方法:`POST` @@ -113,7 +146,10 @@ "chronic_disease_flag": 0, "children_count": 1, "industry": "制造业", - "marital_status": "已婚" + "marital_status": "已婚", + "work_autonomy": 3.2, + "supervisor_support": 3.5, + "self_efficacy": 3.4 } ``` @@ -122,50 +158,94 @@ - `predicted_hours` - `risk_level` - `risk_label` +- `risk_probability` - `confidence` - `model_used` - `model_name_cn` -### 4.2 模型对比 +### 5.2 模型对比 - URL:`/api/predict/compare` - 方法:`POST` - 说明:返回多个模型在同一输入下的预测对比结果 -### 4.3 获取模型列表 +### 5.3 获取模型列表 - URL:`/api/predict/models` - 方法:`GET` -- 说明:返回可用模型及其性能指标,包含传统模型与 `LSTM+MLP` 深度学习模型 +- 说明:返回当前可用模型及其性能指标。当前模型接口名包括 `random_forest`、`gradient_boosting`、`extra_trees`、`xgboost` 与 `lstm_mlp` -### 4.4 获取模型信息 +### 5.4 获取模型信息 - URL:`/api/predict/model-info` - 方法:`GET` -- 说明:返回训练样本量、特征数量、训练日期以及深度学习窗口信息 +- 说明:返回训练样本量、特征数量、训练日期和深度学习窗口信息 -新增返回字段示例: +返回字段示例: +- `train_samples` +- `test_samples` +- `feature_count` +- `training_date` - `sequence_window_size` - `deep_learning_available` -## 5. 员工画像接口 +### 5.5 风险分类 -### 5.1 获取聚类结果 +- URL:`/api/predict/risk-classify` +- 方法:`POST` +- 说明:使用分类器直接返回风险等级与概率分布 + +## 6. `SHAP` 可解释分析接口 + +### 6.1 获取全局解释 + +- URL:`/api/shap/global` +- 方法:`GET` +- 参数:`model`,可选,默认 `random_forest` +- 说明:返回全局特征重要性及其在 `JD-R` 维度上的聚合结果 + +### 6.2 获取局部解释 + +- URL:`/api/shap/local` +- 方法:`POST` +- 说明:返回单次预测样本的局部特征贡献及维度贡献 + +### 6.3 获取交互强度 + +- URL:`/api/shap/interaction` +- 方法:`GET` +- 参数: + - `model` + - `top_n` +- 说明:返回近似特征交互强度前 `N` 项 + +### 6.4 获取依赖关系 + +- URL:`/api/shap/dependence` +- 方法:`GET` +- 参数: + - `feature` + - `model` +- 说明:返回指定特征的取值与 `SHAP` 值关系 + +## 7. 员工画像接口 + +### 7.1 获取聚类结果 - URL:`/api/cluster/result` - 方法:`GET` - 参数:`n_clusters` - 说明:返回聚类后的群体列表 -### 5.2 获取聚类画像 +### 7.2 获取聚类画像 - URL:`/api/cluster/profile` - 方法:`GET` - 参数:`n_clusters` - 说明:返回雷达图所需的群体画像数据 -### 5.3 获取散点数据 +### 7.3 获取散点数据 - URL:`/api/cluster/scatter` - 方法:`GET` @@ -174,9 +254,10 @@ - `x_axis` - `y_axis` -## 6. 错误处理 +## 8. 错误处理 - `400`:请求参数错误 +- `404`:资源或分类模型不可用 - `500`:服务器内部错误 常见错误场景: @@ -184,4 +265,5 @@ - 请求体为空 - 维度参数非法 - 模型文件缺失或加载失败 +- `SHAP` 依赖未安装 - 后端依赖未正确安装 diff --git a/docs/03_数据设计文档.md b/docs/03_数据设计文档.md index dd234e0..c4bc887 100644 --- a/docs/03_数据设计文档.md +++ b/docs/03_数据设计文档.md @@ -2,7 +2,7 @@ ## 1. 数据集说明 -本系统数据集为中国企业员工缺勤事件数据集。每条记录表示一次员工缺勤事件,预测目标为缺勤时长(小时)。 +本系统数据集为中国企业员工缺勤事件模拟数据集。每条记录表示一次员工缺勤事件,预测目标为缺勤时长(小时)。数据在中国企业管理场景假设下生成,并补充了 `JD-R` 理论相关字段。 数据文件: @@ -87,13 +87,33 @@ - 前一工作日是否加班 - 缺勤时长(小时) +### 3.6 `JD-R` 理论字段 + +- 工作自主性 +- 情绪劳动强度 +- 时间压力感知 +- 角色模糊度 +- 工作家庭冲突 +- 上级支持 +- 同事支持 +- 技能多样性 +- 职业发展机会 +- 参与决策 +- 组织公平感 +- 自我效能感 +- 心理韧性 +- 乐观程度 +- 工作倦怠 +- 工作投入 +- `_jdr_version` + ## 4. 目标变量设计 目标变量: - `缺勤时长(小时)` -风险等级映射: +系统展示层风险等级映射: - 小于 4 小时:低风险 - 4 至 8 小时:中风险 @@ -117,15 +137,29 @@ - 通勤分层 - 加班分层 -## 6. 数据生成逻辑 +## 6. `JD-R` 复合指标设计 -### 6.1 生成原则 +在 `model_features.py` 中,系统进一步构建以下理论复合指标: + +- 工作要求指数 +- 工作资源指数 +- 个人资源指数 +- `JD-R` 平衡度 +- 倦怠风险指数 +- 工作投入指数 + +这些指标用于 `JD-R` 页面分析、解释路径分析和预测解释维度聚合。 + +## 7. 数据生成逻辑 + +### 7.1 生成原则 - 结合中国企业实际管理场景设计字段 - 保证类别分布与数值范围具有合理性 - 让关键特征和目标变量之间保持稳定、可学习关系 +- 让理论变量与业务变量之间具备可解释映射关系 -### 6.2 影响关系示例 +### 7.2 影响关系示例 - 请假类型对缺勤时长有显著影响 - 医院证明通常对应更高缺勤时长 @@ -133,9 +167,17 @@ - 慢性病史和健康异常会提升缺勤时长 - 年假和调休通常对应较短缺勤时长 -### 6.3 时序样本构造 +### 7.3 `JD-R` 变量生成逻辑 -为支持 LSTM+MLP 深度学习模型,数据集在事件层面额外补充了时序字段: +- 工作要求侧重由加班、通勤、夜班、家庭冲突和角色模糊等因素驱动 +- 工作资源侧重由上级支持、同事支持、技能多样性、职业发展和组织公平感构成 +- 个人资源侧重由自我效能感、心理韧性和乐观程度构成 +- 工作倦怠由高要求与低资源共同推动 +- 工作投入由高资源、高个人资源与较低倦怠共同促进 + +## 8. 时序样本构造 + +为支持深度学习时序模型,数据集在事件层面额外补充了时序字段: - `事件日期`:缺勤事件发生日期 - `事件日期索引`:便于排序和窗口切片的数值型时间索引 @@ -145,27 +187,28 @@ 深度学习样本构造规则如下: - 以员工为单位按 `事件日期索引` 和 `事件序号` 排序 -- 取最近 `5` 次缺勤事件作为时间窗口输入 +- 取最近 `8` 次缺勤事件作为时间窗口输入 - 序列不足时使用前向零填充 - 当前事件作为窗口最后一个时间步 -- 静态特征单独输入 MLP 分支,与 LSTM 输出融合后进行回归预测 +- 静态特征单独输入静态分支,与时序编码结果融合后进行回归预测 -## 7. 数据质量要求 +## 9. 数据质量要求 - 无大量缺失值 - 类别字段取值可控 - 数值字段范围合理 - 高风险比例处于可接受范围 - 关键变量与目标方向关系合理 +- `JD-R` 变量与业务变量关系具有可解释性 -## 8. 当前数据集统计 +## 10. 当前数据集统计 - 样本量:12000 - 员工覆盖数:2575 - 企业覆盖数:180 - 行业数:7 -- 字段总数:52 +- 字段总数:73 详细统计可参考: -- [中国企业缺勤模拟数据集说明.md](D:/VScodeProject/forsetsystem/中国企业缺勤模拟数据集说明.md) +- [中国企业缺勤模拟数据集说明.md](D:/forsetsystem/docs/中国企业缺勤模拟数据集说明.md) diff --git a/docs/04_UI原型设计.md b/docs/04_UI原型设计.md index b246413..f0a2e11 100644 --- a/docs/04_UI原型设计.md +++ b/docs/04_UI原型设计.md @@ -28,7 +28,7 @@ 展示重点: -- 让评审快速看到系统能做总体统计与可视化 +- 让评审快速看到系统具备总体统计与可视化能力 ### 3.2 影响因素分析页 @@ -41,25 +41,41 @@ 展示重点: -- 模型可解释性 - 关键因素主次关系 +- 多群体差异分析能力 -### 3.3 缺勤预测页 +### 3.3 `JD-R` 理论分析页 + +页面组成: + +- 页面头图 +- 维度雷达图或统计卡片 +- 工作倦怠与工作投入分布图 +- 双路径分析展示区 +- `SHAP` 全局解释切换区 + +展示重点: + +- 回答“为什么员工会缺勤” +- 将心理学理论与数据分析结果打通 + +### 3.4 缺勤预测页 页面组成: - 页面头图 - 左侧多卡片输入区 -- 右侧结果与风险说明整合卡片 +- 右侧预测结果与风险说明卡片 - 模型对比卡片 +- `SHAP` 局部解释卡片 展示重点: -- 界面紧凑、核心输入突出 +- 核心输入突出 - 结果展示直观 -- 风险说明清晰易讲解 +- 单次预测具备可解释性 -### 3.4 员工画像页 +### 3.5 员工画像页 页面组成: @@ -77,6 +93,7 @@ - 数据概览 - 影响因素 +- `JD-R` 分析 - 缺勤预测 - 员工画像 @@ -93,17 +110,19 @@ - 表单采用卡片分组,避免长表单垂直堆叠 - 预测结果使用重点色突出 - 风险等级使用颜色标签区分 +- `JD-R` 维度与 `SHAP` 解释使用具备区分性的色彩编码 ## 6. 交互设计 - 支持模型自动选择 - 支持查看模型对比 -- 支持深色模式切换 +- 支持查看 `SHAP` 全局/局部解释 - 支持侧边栏折叠 ## 7. 答辩展示建议 - 先展示数据概览页,说明系统整体能力 -- 再进入影响因素页解释模型逻辑 -- 然后演示缺勤预测页输入与结果 +- 再进入影响因素页解释关键影响因素 +- 随后展示 `JD-R` 页面回答“为什么缺勤” +- 然后演示预测页输入、结果与 `SHAP` 解释 - 最后展示员工画像页总结系统分析能力 diff --git a/docs/05_毕业论文摘要与关键词草案.md b/docs/05_毕业论文摘要与关键词草案.md index edff7e5..35041ae 100644 --- a/docs/05_毕业论文摘要与关键词草案.md +++ b/docs/05_毕业论文摘要与关键词草案.md @@ -2,23 +2,22 @@ ## 中文摘要草案 -随着企业管理数字化水平的提升,员工缺勤行为分析逐渐成为人力资源管理中的重要研究内容。针对传统缺勤管理方式依赖人工统计、分析效率较低、风险预警能力不足等问题,本文设计并实现了一套基于中国企业员工缺勤事件分析与预测系统。系统围绕缺勤事件数据,构建了数据概览、影响因素分析、缺勤风险预测和员工群体画像四个核心模块,实现了缺勤时长统计分析、关键因素挖掘、多模型预测与聚类画像展示等功能。 +随着企业管理数字化水平的提升,员工缺勤行为分析逐渐成为人力资源管理中的重要研究内容。针对传统缺勤管理方式依赖人工统计、分析效率较低、风险预警能力不足、缺乏理论解释支撑等问题,本文设计并实现了一套基于中国企业员工缺勤事件的分析与预测系统。系统围绕缺勤事件数据,构建了数据概览、影响因素分析、`JD-R` 理论分析、缺勤风险预测和员工群体画像五类核心功能,实现了缺勤时长统计分析、关键因素挖掘、理论驱动解释、多模型预测与聚类画像展示。 -在系统实现过程中,后端采用 Flask 框架构建接口服务,结合 Pandas、Scikit-learn 与 PyTorch 完成数据处理、特征工程、模型训练与预测;前端采用 Vue 3、Element Plus 与 ECharts 实现交互式可视化界面。针对毕业设计场景,系统构建了一套符合中国企业特征的员工缺勤事件数据集,并设计了请假类型、医院证明、加班通勤压力、健康风险等关键影响因素。同时,为增强论文的算法研究内容,系统引入了 LSTM+MLP 深度学习模型,将员工历史缺勤事件序列与静态属性特征进行融合建模。实验结果表明,系统能够较好地完成缺勤时长预测任务,并通过可视化方式直观展现缺勤趋势、影响因素和员工群体特征。 +在系统实现过程中,后端采用 Flask 框架构建接口服务,结合 Pandas、Scikit-learn 与 PyTorch 完成数据处理、特征工程、模型训练、理论指标计算与可解释分析;前端采用 Vue 3、Element Plus 与 ECharts 实现交互式可视化界面。针对毕业设计场景,系统构建了一套符合中国企业特征的员工缺勤事件模拟数据集,并在数据层补充工作要求、工作资源、个人资源、工作倦怠和工作投入等 `JD-R` 理论变量,用于解释员工缺勤的心理学驱动机制。同时,系统引入树模型、聚类模型与时序注意力融合深度学习模型,对单次缺勤时长进行预测,并结合 `SHAP` 全局与局部解释技术,提高模型结果的可解释性。 -本文的研究工作对企业缺勤行为分析与管理辅助决策具有一定参考价值,同时也为后续扩展员工行为分析、离职预警和绩效管理等方向提供了基础。 +研究结果表明,系统能够较好地完成缺勤时长预测任务,并通过 `JD-R` 双路径分析和 `SHAP` 特征解释揭示缺勤行为背后的工作负荷、资源支持与个体心理资源作用机制。本文的研究工作为企业缺勤行为分析、风险预警和管理干预提供了可视化、可解释、可扩展的技术方案,也为后续开展员工离职预警、职业健康管理和组织行为分析提供了基础。 ## 关键词 - 员工缺勤分析 +- `JD-R` 模型 - 风险预测 -- 特征挖掘 +- `SHAP` 可解释分析 - 机器学习 -- 深度学习 +- 时序融合模型 - 可视化系统 -- Vue -- Flask ## 英文摘要标题参考 -Employee Absence Analysis and Prediction System Based on Multi-dimensional Feature Mining +Employee Absence Analysis and Prediction System with JD-R Theory and Explainable Modeling diff --git a/docs/06_毕业论文目录与章节设计.md b/docs/06_毕业论文目录与章节设计.md index d1b246b..940ebbc 100644 --- a/docs/06_毕业论文目录与章节设计.md +++ b/docs/06_毕业论文目录与章节设计.md @@ -15,12 +15,14 @@ ### 第2章 相关技术与理论基础 -- 2.1 Flask 后端框架 -- 2.2 Vue 3 前端框架 -- 2.3 ECharts 可视化技术 -- 2.4 机器学习相关算法 -- 2.5 深度学习相关算法 -- 2.6 K-Means 聚类方法 +- 2.1 `JD-R` 工作要求-资源模型 +- 2.2 Flask 后端框架 +- 2.3 Vue 3 前端框架 +- 2.4 ECharts 可视化技术 +- 2.5 机器学习相关算法 +- 2.6 深度学习时序融合算法 +- 2.7 `SHAP` 可解释分析方法 +- 2.8 `K-Means` 聚类方法 ### 第3章 系统需求分析 @@ -39,12 +41,14 @@ ### 第5章 系统详细设计与实现 -- 5.1 数据概览模块实现 -- 5.2 影响因素分析模块实现 -- 5.3 缺勤预测模块实现 -- 5.4 LSTM+MLP 深度学习模型实现 -- 5.5 员工画像模块实现 -- 5.6 前端界面实现 +- 5.1 中国企业缺勤模拟数据集实现 +- 5.2 特征工程与 `JD-R` 指标构建 +- 5.3 数据概览与影响因素分析模块实现 +- 5.4 `JD-R` 理论分析模块实现 +- 5.5 缺勤预测与 `SHAP` 解释实现 +- 5.6 时序融合深度学习模型实现 +- 5.7 员工画像模块实现 +- 5.8 前端界面实现 ### 第6章 系统测试与结果分析 @@ -52,7 +56,9 @@ - 6.2 功能测试 - 6.3 接口测试 - 6.4 传统模型与深度学习模型对比 -- 6.5 系统展示效果分析 +- 6.5 `JD-R` 理论分析结果讨论 +- 6.6 `SHAP` 可解释结果分析 +- 6.7 系统展示效果分析 ### 第7章 总结与展望 @@ -66,7 +72,8 @@ ## 章节写作建议 -- 第1章强调课题意义和系统定位 -- 第3章与第4章突出系统分析与设计能力 -- 第5章重点写实现过程和关键代码逻辑 -- 第6章突出系统已完成的功能效果与模型结果 +- 第1章强调课题意义、问题来源与研究价值 +- 第2章突出“技术基础 + 心理学理论基础”双支撑 +- 第3章与第4章体现系统分析与设计能力 +- 第5章重点写数据、理论、算法和页面如何落地 +- 第6章突出系统已完成的功能效果、模型结果与解释结果 diff --git a/docs/07_毕业论文写作提纲.md b/docs/07_毕业论文写作提纲.md index a8b63f1..279c55e 100644 --- a/docs/07_毕业论文写作提纲.md +++ b/docs/07_毕业论文写作提纲.md @@ -10,26 +10,27 @@ 可写内容: -- 企业缺勤对生产效率和管理成本的影响 -- 数据驱动管理在企业中的应用趋势 -- 本课题的研究价值和实践意义 +- 企业缺勤对生产效率、排班稳定性和管理成本的影响 +- 数据驱动管理在人力资源领域的应用趋势 +- “预测缺勤”与“解释缺勤”并重的研究价值 ## 第2章 相关技术与理论基础 写作要点: - 简要介绍本系统使用的主要技术 -- 介绍预测与聚类相关算法原理 +- 说明“为什么员工会缺勤”的理论基础 可写内容: +- `JD-R` 模型及其健康损伤路径、激励路径 - Flask 的基本特点 - Vue 3 的组件化优势 - Element Plus 和 ECharts 的可视化能力 -- 随机森林、GBDT、Extra Trees 的基本原理 -- LSTM 与 MLP 的基本原理 -- 时序序列建模与多输入融合思想 -- K-Means 聚类思想 +- 随机森林、GBDT、Extra Trees、XGBoost 的基本原理 +- 时序注意力融合模型的基本思想 +- `SHAP` 的可解释分析原理 +- `K-Means` 聚类思想 ## 第3章 系统需求分析 @@ -42,7 +43,8 @@ - 数据概览需求 - 影响因素分析需求 -- 缺勤预测需求 +- `JD-R` 理论解释需求 +- 缺勤预测与可解释预测需求 - 员工画像需求 - 易用性与可维护性要求 @@ -58,6 +60,7 @@ - 前后端分离架构 - 功能模块划分 - 数据集字段设计 +- `JD-R` 变量设计与复合指标设计 - 接口交互流程 - 页面原型说明 @@ -71,19 +74,20 @@ 可写内容: - 数据生成与预处理实现 +- `JD-R` 理论变量构造实现 - 特征工程实现 - 模型训练与保存实现 -- LSTM+MLP 深度学习训练流程 +- 时序融合深度学习训练流程 +- `SHAP` 全局/局部解释实现 - 后端接口实现 - 前端页面实现 -- 预测页卡片布局与交互实现 ## 第6章 系统测试与分析 写作要点: - 用表格和截图体现系统已经完成 -- 模型效果与页面效果都要写 +- 模型效果、解释效果和页面效果都要写 可写内容: @@ -92,6 +96,8 @@ - 预测功能测试 - 聚类与分析结果测试 - 模型性能指标分析 +- `JD-R` 维度结果分析 +- `SHAP` 解释结果分析 - 传统模型与深度学习模型对比分析 ## 第7章 总结与展望 @@ -104,6 +110,6 @@ 可写内容: - 已完成的系统功能 -- 论文研究成果 +- 理论与系统结合的研究成果 - 系统存在的限制 - 后续可扩展方向 diff --git a/docs/08_答辩汇报提纲.md b/docs/08_答辩汇报提纲.md index 6a39bb9..fd30cce 100644 --- a/docs/08_答辩汇报提纲.md +++ b/docs/08_答辩汇报提纲.md @@ -3,20 +3,23 @@ ## 1. 课题背景 - 企业缺勤管理存在统计分散、分析不及时、预测能力不足的问题 -- 本课题旨在构建一个可视化、可分析、可预测的缺勤管理辅助系统 +- 单纯做预测不够,还需要解释“为什么员工会缺勤” +- 本课题以 `JD-R` 理论为基础,构建一个可视化、可分析、可预测、可解释的缺勤管理辅助系统 ## 2. 课题目标 - 展示缺勤数据整体分布 - 分析关键影响因素 -- 实现缺勤风险预测 +- 用 `JD-R` 理论解释缺勤形成机制 +- 实现缺勤风险预测与解释 - 构建员工群体画像 ## 3. 系统总体设计 - 前后端分离架构 - 前端负责界面与图表 -- 后端负责数据处理、模型预测与聚类分析 +- 后端负责数据处理、模型预测、`JD-R` 分析与聚类分析 +- 系统包含 `SHAP` 解释能力 ## 4. 核心功能展示顺序 @@ -30,13 +33,20 @@ - 展示特征重要性排序 - 解释为什么请假类型、医院证明、加班通勤压力等因素更重要 -### 4.3 缺勤预测 +### 4.3 `JD-R` 理论分析 + +- 展示工作要求、工作资源、个人资源三维度 +- 展示工作倦怠与工作投入分布 +- 展示健康损伤路径和激励路径 +- 说明理论如何支撑“为什么要分析缺勤” + +### 4.4 缺勤预测 - 输入关键字段 -- 展示预测时长与风险等级 -- 展示模型对比结果 +- 展示预测时长、风险等级与模型对比 +- 展示 `SHAP` 局部解释 -### 4.4 员工画像 +### 4.5 员工画像 - 展示群体雷达图 - 展示聚类结果与散点图 @@ -45,18 +55,18 @@ - 前后端分离结构清晰 - 采用多模型训练与比较 -- 引入 LSTM+MLP 深度学习模型,支持时序行为建模 -- 融合特征工程与聚类分析 -- 前端页面采用卡片式可视化布局,适合展示 +- 引入基于 `Transformer` 的时序注意力融合深度学习模型 +- 将 `JD-R` 心理学理论映射为可计算的数据字段与复合指标 +- 融合 `SHAP` 全局/局部解释,增强结果可解释性 ## 6. 项目成果 -- 系统可完成统计、分析、预测、画像四类任务 +- 系统可完成统计、分析、理论解释、预测、画像五类任务 - 页面可视化效果完整 -- 项目文档和论文材料配套齐全 +- 文档、论文材料与代码实现保持一致 ## 7. 不足与改进方向 - 可进一步引入真实企业数据 -- 可加入更复杂的深度学习模型 -- 可引入权限管理、报表导出和数据库存储 +- 可继续提升理论变量测量精度 +- 可加入权限管理、报表导出和数据库存储 diff --git a/docs/09_环境配置与安装说明.md b/docs/09_环境配置与安装说明.md index f7e34eb..6883292 100644 --- a/docs/09_环境配置与安装说明.md +++ b/docs/09_环境配置与安装说明.md @@ -2,7 +2,7 @@ ## 1. 推荐环境 -为保证传统机器学习模型和 `LSTM+MLP` 深度学习模型均可正常训练,推荐使用 **conda 虚拟环境** 管理本项目依赖。 +为保证传统机器学习模型和深度学习时序融合模型均可正常训练,推荐使用 **conda 虚拟环境** 管理本项目依赖。 推荐环境: @@ -41,7 +41,7 @@ conda activate forsetenv ## 4. 安装 PyTorch GPU 版 -本项目的 hybrid 深度学习模型要求: +本项目的时序注意力融合模型要求: - `torch >= 2.6` diff --git a/docs/10_题目名称_技术路线_预期结果.md b/docs/10_题目名称_技术路线_预期结果.md index ce47a96..d953646 100644 --- a/docs/10_题目名称_技术路线_预期结果.md +++ b/docs/10_题目名称_技术路线_预期结果.md @@ -2,22 +2,24 @@ ## 1. 题目名称 -基于中国企业员工缺勤事件的分析与预测系统设计与实现 +基于中国企业员工缺勤事件的分析、解释与预测系统设计与实现 ## 2. 论文(设计)采取的主要技术路线或方法 -本课题围绕企业员工缺勤管理场景,采用前后端分离的系统设计思路开展研究与实现。前端基于 `Vue 3`、`Element Plus` 和 `ECharts` 构建可视化展示界面,实现缺勤趋势、影响因素、预测结果和员工画像等内容的交互式展示;后端基于 `Flask` 搭建接口服务,负责数据处理、分析计算、模型推理和聚类结果组织。 +本课题围绕企业员工缺勤管理场景,采用前后端分离的系统设计思路开展研究与实现。前端基于 `Vue 3`、`Element Plus` 和 `ECharts` 构建可视化展示界面,实现缺勤趋势、影响因素、`JD-R` 理论分析、预测结果和员工画像等内容的交互式展示;后端基于 `Flask` 搭建接口服务,负责数据处理、分析计算、模型推理、理论指标组织和聚类结果封装。 -在数据处理方面,首先结合项目内部构建的中国企业员工缺勤事件数据集,使用 `Pandas` 和 `NumPy` 完成数据清洗、字段转换、统计分析与特征整理。随后围绕员工属性、岗位信息、班次安排、健康风险、请假原因、通勤压力和加班情况等因素进行特征工程,形成适用于分析与预测的结构化数据。 +在理论支撑方面,课题引入 `JD-R`(工作要求-资源)模型,用来解释“为什么员工会缺勤”。系统将工作要求、工作资源、个人资源、工作倦怠和工作投入等心理学变量映射为可计算字段,并进一步构建工作要求指数、工作资源指数、个人资源指数、`JD-R` 平衡度等复合指标,用于分析员工缺勤背后的深层机制。 -在算法研究方面,课题采用传统机器学习与深度学习相结合的技术路线。传统模型依托 `scikit-learn`、`XGBoost` 和 `LightGBM` 完成缺勤时长预测与模型对比分析,并通过特征重要性排序和相关性分析挖掘关键影响因素;深度学习部分基于 `PyTorch` 构建 `LSTM+MLP` 融合模型,将员工历史缺勤事件序列与静态属性特征结合,用于提升预测研究的完整性和论文的技术深度。 +在数据处理方面,首先结合项目内部构建的中国企业员工缺勤事件模拟数据集,使用 `Pandas` 和 `NumPy` 完成数据清洗、字段转换、统计分析与特征整理。随后围绕员工属性、岗位信息、班次安排、健康风险、请假原因、通勤压力和加班情况等因素进行特征工程,并补充 `JD-R` 相关变量,形成适用于分析、解释与预测的结构化数据。 -在员工画像分析方面,课题采用 `K-Means` 聚类方法对员工缺勤行为进行分群,结合散点图、雷达图和群体说明完成群体画像展示,从而辅助企业识别不同类型的缺勤风险群体。最终通过系统集成与前后端联调,实现缺勤数据概览、影响因素分析、单次缺勤预测和员工画像分析四个核心功能模块。 +在算法研究方面,课题采用传统机器学习、深度学习与可解释分析相结合的技术路线。传统模型依托 `scikit-learn` 和 `XGBoost` 完成缺勤时长预测与模型对比分析,并通过特征重要性排序和相关性分析挖掘关键影响因素;深度学习部分基于 `PyTorch` 构建时序注意力融合模型,以 `8` 步历史缺勤事件窗口结合静态属性特征进行建模;可解释分析部分引入 `SHAP`,从全局与局部两个层面对预测结果进行解释,并按 `JD-R` 理论维度进行聚合展示。 + +在员工画像分析方面,课题采用 `K-Means` 聚类方法对员工缺勤行为进行分群,结合散点图、雷达图和群体说明完成群体画像展示,从而辅助企业识别不同类型的缺勤风险群体。最终通过系统集成与前后端联调,实现缺勤数据概览、影响因素分析、`JD-R` 理论解释、单次缺勤预测和员工画像分析五类核心功能。 ## 3. 论文(设计)预期结果 -本课题预期完成一个可运行、可展示、可支撑论文撰写的员工缺勤分析与预测系统。系统能够实现缺勤事件统计展示、趋势分析、原因分布分析、关键因素挖掘、缺勤时长预测、风险等级评估和员工群体画像展示等功能,满足本科毕业设计对系统实现和功能展示的要求。 +本课题预期完成一个可运行、可展示、可支撑论文撰写的员工缺勤分析与预测系统。系统能够实现缺勤事件统计展示、趋势分析、原因分布分析、关键因素挖掘、`JD-R` 理论解释、缺勤时长预测、风险等级评估、`SHAP` 解释和员工群体画像展示等功能,满足本科毕业设计对系统实现和功能展示的要求。 -在研究结果方面,预期能够形成一套较完整的员工缺勤分析方法流程,包括数据预处理、特征工程、相关性分析、特征重要性评估、预测建模和聚类画像分析。系统应能够根据输入的关键业务字段输出缺勤时长预测结果、风险等级和多模型对比结果,并通过可视化图表直观展示分析结论,为企业人力资源管理提供辅助决策依据。 +在研究结果方面,预期能够形成一套较完整的员工缺勤分析方法流程,包括数据预处理、理论变量构造、特征工程、相关性分析、特征重要性评估、预测建模、可解释分析和聚类画像分析。系统应能够根据输入的关键业务字段输出缺勤时长预测结果、风险等级、多模型对比结果和解释结果,并通过可视化图表直观展示分析结论,为企业人力资源管理提供辅助决策依据。 在论文成果方面,预期形成与项目实现一致的毕业设计文档与论文材料,包括需求分析、系统架构设计、接口设计、数据设计、系统实现、实验分析和总结展望等内容,并能够支撑后续开题、中期检查、论文提交和答辩展示工作。 diff --git a/docs/README.md b/docs/README.md index 8529fc2..933f7e8 100644 --- a/docs/README.md +++ b/docs/README.md @@ -1,31 +1,32 @@ # 毕设文档目录 -本目录用于存放“基于中国企业员工缺勤事件分析与预测系统”的毕业设计配套文档。 +本目录用于存放“中国企业员工缺勤分析与预测系统”的系统文档、论文配套文档与安装说明。当前文档内容已按代码实现同步到中国企业模拟数据集、`JD-R` 理论分析和 `SHAP` 可解释分析版本。 ## 系统文档 -- [00_需求规格说明书.md](D:/VScodeProject/forsetsystem/docs/00_需求规格说明书.md) -- [01_系统架构设计.md](D:/VScodeProject/forsetsystem/docs/01_系统架构设计.md) -- [02_接口设计文档.md](D:/VScodeProject/forsetsystem/docs/02_接口设计文档.md) -- [03_数据设计文档.md](D:/VScodeProject/forsetsystem/docs/03_数据设计文档.md) -- [04_UI原型设计.md](D:/VScodeProject/forsetsystem/docs/04_UI原型设计.md) +- [00_需求规格说明书.md](D:/forsetsystem/docs/00_需求规格说明书.md) +- [01_系统架构设计.md](D:/forsetsystem/docs/01_系统架构设计.md) +- [02_接口设计文档.md](D:/forsetsystem/docs/02_接口设计文档.md) +- [03_数据设计文档.md](D:/forsetsystem/docs/03_数据设计文档.md) +- [04_UI原型设计.md](D:/forsetsystem/docs/04_UI原型设计.md) ## 论文配套文档 -- [05_毕业论文摘要与关键词草案.md](D:/VScodeProject/forsetsystem/docs/05_毕业论文摘要与关键词草案.md) -- [06_毕业论文目录与章节设计.md](D:/VScodeProject/forsetsystem/docs/06_毕业论文目录与章节设计.md) -- [07_毕业论文写作提纲.md](D:/VScodeProject/forsetsystem/docs/07_毕业论文写作提纲.md) -- [08_答辩汇报提纲.md](D:/VScodeProject/forsetsystem/docs/08_答辩汇报提纲.md) -- [10_题目名称_技术路线_预期结果.md](D:/VScodeProject/forsetsystem/docs/10_题目名称_技术路线_预期结果.md) +- [05_毕业论文摘要与关键词草案.md](D:/forsetsystem/docs/05_毕业论文摘要与关键词草案.md) +- [06_毕业论文目录与章节设计.md](D:/forsetsystem/docs/06_毕业论文目录与章节设计.md) +- [07_毕业论文写作提纲.md](D:/forsetsystem/docs/07_毕业论文写作提纲.md) +- [08_答辩汇报提纲.md](D:/forsetsystem/docs/08_答辩汇报提纲.md) +- [10_题目名称_技术路线_预期结果.md](D:/forsetsystem/docs/10_题目名称_技术路线_预期结果.md) +- [开题报告.md](D:/forsetsystem/docs/开题报告.md) -## 环境配置文档 +## 数据与环境文档 -- [09_环境配置与安装说明.md](D:/VScodeProject/forsetsystem/docs/09_环境配置与安装说明.md) +- [中国企业缺勤模拟数据集说明.md](D:/forsetsystem/docs/中国企业缺勤模拟数据集说明.md) +- [09_环境配置与安装说明.md](D:/forsetsystem/docs/09_环境配置与安装说明.md) ## 说明 -- 系统文档以当前项目实现为准,围绕中国企业员工缺勤分析、风险预测与群体画像展开。 -- 论文文档采用本科毕业设计常用结构,便于后续继续扩写为正式论文。 -- 若后续系统功能或字段发生变化,应同步更新本目录下相关文档。 -- 深度学习部分推荐使用 `conda` 虚拟环境配合 `pip` 安装 PyTorch GPU 版。 -- 推荐安装顺序为:创建 `conda` 环境、安装官方 `cu124` 的 PyTorch、再补充其余后端依赖。 +- 系统文档以当前项目实现为准,围绕中国企业员工缺勤分析、风险预测、`JD-R` 理论解释与群体画像展开。 +- 论文文档采用本科毕业设计常用结构,便于继续扩写为正式论文。 +- 若后续系统功能、接口、字段或理论框架发生变化,应同步更新本目录下相关文档。 +- 深度学习模型在接口层仍使用 `lstm_mlp` 名称,但当前内部实现为基于 `Transformer` 的时序注意力融合网络。 diff --git a/docs/中国企业缺勤模拟数据集说明.md b/docs/中国企业缺勤模拟数据集说明.md index 5b9fdab..e3a1b94 100644 --- a/docs/中国企业缺勤模拟数据集说明.md +++ b/docs/中国企业缺勤模拟数据集说明.md @@ -4,13 +4,13 @@ - 数据文件:`backend/data/raw/china_enterprise_absence_events.csv` - 数据定位:中国企业员工缺勤事件模拟数据集 -- 数据来源:项目内部独立模拟生成,与原 `UCI Absenteeism` 数据集无任何字段映射和业务关联 +- 数据来源:项目内部独立模拟生成,并补充 `JD-R` 理论相关字段,不与原 `UCI Absenteeism` 数据集做字段映射 - 样本粒度:每一行表示一次员工缺勤事件 - 样本量:`12000` 条 - 员工覆盖数:`2575` - 企业覆盖数:`180` - 行业覆盖数:`7` -- 字段总数:`52` +- 字段总数:`73` - 预测目标:`缺勤时长(小时)` ## 2. 目标变量分布 @@ -43,7 +43,7 @@ - 极高风险约 `1.95%` - 高风险及以上(`>8` 小时)占比约 `21.05%` -该分布特征为“中风险为主、少量高风险、极端长缺勤较少”,适合用于回归预测与风险分层分析。 +该分布特征为“中风险为主、少量高风险、极端长缺勤较少”,适合用于回归预测、风险分层分析和可解释建模。 ## 3. 字段设计原则 @@ -52,6 +52,7 @@ - 类别字段以有限枚举为主,方便前端表单录入和模型编码 - 数值字段控制在合理范围内,避免训练时出现大面积异常值 - 通过规则驱动加扰动的方式生成数据,使关键特征与目标值之间存在稳定、可学习的关系 +- 通过 `JD-R` 理论变量补充“为什么员工会缺勤”的解释维度 ## 4. 字段清单 @@ -131,6 +132,32 @@ | 是否连续缺勤 | 是否存在连续缺勤现象 | | 前一工作日是否加班 | 缺勤前一个工作日是否加班 | | 缺勤时长(小时) | 本次缺勤事件持续时长,预测目标列 | +| 事件日期 | 缺勤事件发生日期 | +| 事件日期索引 | 便于排序和构造时间窗口的数值索引 | +| 事件序号 | 员工历史事件顺序 | +| 员工历史事件数 | 员工在样本中的事件累计数 | + +### 4.6 `JD-R` 理论字段 + +| 字段名 | 含义 | +|---|---| +| 工作自主性 | 员工对工作节奏与方式的控制程度 | +| 情绪劳动强度 | 岗位中的情绪管理与情绪付出要求 | +| 时间压力感知 | 员工主观感受到的时间紧迫程度 | +| 角色模糊度 | 岗位职责边界不清晰程度 | +| 工作家庭冲突 | 工作要求对家庭角色造成的冲突程度 | +| 上级支持 | 员工感知到的管理支持程度 | +| 同事支持 | 员工感知到的同伴支持程度 | +| 技能多样性 | 工作内容和技能运用的丰富程度 | +| 职业发展机会 | 员工感知到的发展与晋升空间 | +| 参与决策 | 员工参与工作决策的程度 | +| 组织公平感 | 员工对组织规则与分配公平的感知 | +| 自我效能感 | 员工对自身胜任任务能力的信心 | +| 心理韧性 | 员工面对压力和变化时的恢复能力 | +| 乐观程度 | 员工对工作与未来的积极预期 | +| 工作倦怠 | 高要求、低资源情境下的耗竭状态 | +| 工作投入 | 高资源情境下的积极投入状态 | +| `_jdr_version` | `JD-R` 字段版本标记 | ## 5. 数值字段范围概览 @@ -204,7 +231,8 @@ - 员工缺勤时长回归预测 - 缺勤风险分层预警 -- 特征重要性分析 +- `JD-R` 理论指标构建与解释分析 +- 特征重要性与 `SHAP` 解释 - 行业/岗位/班次群体对比 - 员工群体聚类画像 - 前端数据可视化展示与业务汇报 @@ -214,6 +242,7 @@ - 生成脚本:`backend/core/generate_dataset.py` - 训练脚本:`backend/core/train_model.py` - 预处理入口:`backend/core/preprocessing.py` +- `JD-R` 指标构建:`backend/core/model_features.py` 如果需要重新生成全新数据集,可删除旧文件后重新执行: @@ -224,4 +253,4 @@ python core/generate_dataset.py ## 12. 说明 -该数据集为模拟数据,不对应任何真实企业、真实员工或真实业务记录,仅用于毕业设计系统中的算法训练、接口联调与前端展示。 +该数据集为模拟数据,不对应任何真实企业、真实员工或真实业务记录,仅用于毕业设计系统中的算法训练、接口联调、理论分析与前端展示。 diff --git a/docs/开题报告.md b/docs/开题报告.md index d54fd04..d34faec 100644 --- a/docs/开题报告.md +++ b/docs/开题报告.md @@ -8,7 +8,7 @@ - **学号**:2210121330 - **学生姓名**:张硕 - **指导教师**:孙昌霞、李天格 -- **题目名称**:基于多维特征挖掘的员工缺勤分析与预测系统设计与实现 +- **题目名称**:基于中国企业员工缺勤分析、解释与预测系统设计与实现 --- @@ -16,13 +16,13 @@ **研究目的:** -随着企业数字化转型的深入推进,人力资源管理正从经验驱动向数据驱动转变。员工缺勤作为影响企业运营效率的重要因素,其背后蕴含着丰富的多维度信息。本课题旨在利用机器学习算法,对UCI Absenteeism数据集中的740条员工考勤记录进行深入分析,挖掘影响缺勤的多维度特征,构建基于随机森林和XGBoost的缺勤预测模型,并设计实现一个完整的数据分析与预测系统。通过该系统,企业能够从数据中发现缺勤背后的规律,实现对员工缺勤风险的精准识别和预警,为人力资源管理提供科学、客观的决策支持。 +随着企业数字化转型的深入推进,人力资源管理正从经验驱动向数据驱动转变。员工缺勤作为影响企业运营效率、排班稳定性和管理成本的重要因素,其背后不仅包含工作负荷、健康状况、家庭责任等客观因素,也与员工主观感受到的工作要求、工作资源和个人资源密切相关。本课题旨在构建一个面向中国企业管理场景的员工缺勤分析、解释与预测系统,通过多维特征工程、机器学习建模、聚类分析和 `JD-R`(工作要求-资源)理论解释,帮助管理者识别缺勤风险、理解缺勤成因并辅助制定干预策略。 **研究意义:** -从理论层面来看,本课题探索了多维特征挖掘在人力资源数据分析领域的应用价值。传统的缺勤研究多侧重于单一因素分析或简单的统计描述,缺乏对多维度特征之间复杂关系的深入挖掘。本研究将特征工程、相关性分析、机器学习预测和聚类分析等方法有机结合,构建了一个完整的分析框架,为相关领域的研究提供了方法论参考。同时,通过对随机森林、XGBoost等算法在缺勤预测任务中的性能对比,丰富了机器学习在人力资源管理领域的应用案例。 +从理论层面来看,本课题将心理学中的 `JD-R` 模型引入员工缺勤分析场景,用来回答“为什么员工会缺勤”这一关键问题。传统缺勤研究往往停留在统计描述或单一因素分析层面,难以系统解释高工作要求、低工作资源、个体心理资源不足与缺勤行为之间的关系。本研究将工作要求、工作资源、个人资源、工作倦怠和工作投入等变量映射为可计算的数据字段,并进一步构建复合指标,使心理学理论能够在系统中被量化、被展示、被验证,从而为缺勤行为研究提供更具解释力的分析框架。 -从实践层面来看,本课题具有重要的现实意义。员工缺勤不仅直接影响企业的工作进度和运营成本,还可能反映员工的工作压力、健康状况、工作满意度等深层次问题。通过本系统,企业能够识别出影响缺勤的关键因素,如通勤距离、工作负荷、生活习惯等,从而有针对性地制定管理策略。例如,如果发现通勤距离是主要影响因素,企业可以考虑提供交通补贴或调整工作地点;如果发现工作负荷过高导致缺勤,可以优化工作分配或增加人力投入。此外,系统的预测功能能够帮助HR提前识别高风险员工,采取预防措施,降低缺勤带来的损失。聚类分析功能则能够将员工划分为不同群体,实现精细化管理,提升人力资源管理的效率和效果。 +从实践层面来看,本课题具有较强的应用价值。员工缺勤不仅会影响生产与服务效率,还可能反映员工在加班、通勤、夜班、健康风险、家庭压力和组织支持等方面的真实困境。通过本系统,企业能够识别导致缺勤的关键因素,理解高缺勤群体的特征差异,并基于预测结果和解释结果进行精细化管理。例如,当系统发现“高工作要求 + 高倦怠 + 低资源支持”的组合更容易带来高缺勤时,管理者可以针对性地优化排班、加强支持或改善工作环境。 --- @@ -30,23 +30,27 @@ ### 1. 数据概览与全局统计分析 -本研究的第一个核心内容是对UCI Absenteeism数据集进行全面的探索性数据分析。该数据集记录了巴西某快递公司2007年至2010年间的740条员工缺勤记录,包含21个特征字段。首先,系统将计算并展示关键统计指标,包括样本总数、缺勤总时长、平均缺勤时长、最大/最小缺勤时长、高风险员工占比等,帮助管理者快速了解企业整体考勤健康状况。其次,从时间维度进行深入分析,通过折线图展示全年12个月的缺勤变化趋势,识别季节性规律;通过柱状图展示周一至周五的缺勤分布,发现工作日缺勤的周期性特征;通过饼图展示春夏秋冬四个季节的缺勤比例,探索环境因素对缺勤的影响。最后,对缺勤原因进行分类统计,数据集包含28类缺勤原因,其中21类为国际疾病分类(ICD)代码,7类为非疾病原因(如医疗咨询、献血、无故缺勤等),通过可视化展示各类原因的占比,帮助企业了解缺勤的主要类型。 +本研究首先围绕中国企业员工缺勤事件模拟数据集开展探索性分析。数据集当前包含 `12000` 条缺勤事件记录,覆盖 `2575` 名员工、`180` 家企业和 `7` 个行业。系统将展示样本总量、员工覆盖数、平均缺勤时长、高风险事件占比等核心指标,并从月度趋势、星期分布、季节分布、请假类型和请假原因等角度对缺勤现象进行整体描述,为后续分析提供事实基础。 ### 2. 多维特征挖掘与影响因素分析 -这是本研究的核心内容,旨在回答"为什么缺勤"这一关键问题。首先,利用训练好的随机森林模型,计算各维度特征对缺勤的影响权重。随机森林算法能够输出每个特征的重要性得分,通过条形图降序排列,直观展示哪些特征是导致缺勤的主要因素,例如可能发现"通勤距离"、"工作负荷"、"饮酒习惯"等特征具有较高的重要性得分,而"宠物数量"、"身高"等特征影响较小。其次,计算特征之间的相关系数矩阵,以热力图形式展示特征间的关系,特别关注生活习惯特征(如Social drinker)与缺勤时长之间的相关关系,挖掘隐性规律。例如,可能发现饮酒员工与缺勤时长之间存在正相关,为制定公司制度提供数据支持。最后,进行群体对比分析,将员工按照不同维度分组,对比各组的平均缺勤时长,如饮酒者vs不饮酒者、高学历vs低学历、有子女vs无子女等,识别不同群体的缺勤特征,为精细化管理提供依据。 +本研究的第二个核心内容是识别影响缺勤时长的关键因素。系统通过树模型特征重要性、相关性热力图和群体对比分析,对加班通勤压力、健康风险、请假类型、慢性病史、家庭负担等变量与缺勤时长之间的关系进行量化分析。同时,系统支持按行业、班次、岗位序列、婚姻状态和慢性病史等维度比较不同群体的平均缺勤差异,为企业开展精细化管理提供依据。 -### 3. 员工缺勤风险预测 +### 3. `JD-R` 理论驱动的缺勤解释分析 -本研究的第三个核心内容是构建缺勤预测模型,解决"未来会怎样"的问题。基于XGBoost和随机森林两种回归算法,构建预测模型,输入员工的17个特征属性(包括年龄、通勤距离、交通费、工作负荷、BMI、饮酒习惯、月份等),输出预测的缺勤时长。模型训练过程中,将数据集划分为训练集和测试集,采用交叉验证方法优化模型参数,使用均方误差(MSE)、决定系数(R²)等指标评估模型性能。在系统层面,设计交互式预测界面,左侧为参数输入表单,用户可以输入或选择各项属性值,点击"开始预测"按钮后,右侧实时显示预测结果。预测结果包括预测的缺勤时长(如8小时)、风险等级(<4小时为低风险绿色,4-8小时为中风险黄色,>8小时为高风险红色)以及模型的可信度(如准确率85%)。此外,系统还支持新入职员工评估功能,针对没有历史数据的新员工,仅凭其入职时的属性信息,系统给出潜在缺勤风险的预估,辅助HR在招聘环节进行人员筛选。 +这是本研究最重要的理论创新内容。系统将 `JD-R` 模型引入员工缺勤分析,构建工作要求、工作资源、个人资源、工作倦怠和工作投入等变量体系,并进一步形成工作要求指数、工作资源指数、个人资源指数、`JD-R` 平衡度等复合指标。基于这些指标,系统从两个路径解释缺勤行为:一是健康损伤路径,即高工作要求通过提升工作倦怠而增加缺勤风险;二是激励路径,即较高的工作资源和个人资源通过提升工作投入而降低缺勤风险。该模块能够帮助论文从“相关性发现”上升到“理论化解释”。 -### 4. 员工画像与群体聚类 +### 4. 员工缺勤风险预测与可解释分析 -本研究的第四个核心内容是利用K-Means聚类算法对员工进行分类,展示算法对人群的分类能力。K-Means算法能够将所有员工自动划分为3-4个类别,例如可能识别出"模范型"(工龄长、负荷适中、缺勤少)、"压力型"(工龄短、负荷极大、缺勤多)、"生活习惯型"(BMI高、爱喝酒)等不同群体。对于每个聚类群体,系统将绘制雷达图,展示其在年龄、工龄、工作负荷、BMI、缺勤倾向等维度上的特征分布,让管理者一目了然地看到不同群体的差异。例如,压力型群体可能在"工作负荷"轴上特别长,而"缺勤倾向"轴也较高,提示HR需要关注该群体的工作压力问题。同时,通过散点图展示聚类结果,横轴为年龄,纵轴为缺勤时长,不同颜色的点代表不同的聚类群体,直观展示群体的分布特征。基于聚类结果,系统将为HR提供针对性的管理建议,如对压力型群体建议减少加班、对生活习惯型群体建议关注体检等。 +本研究的第四个核心内容是构建缺勤预测模型,解决“未来会怎样”的问题。系统基于随机森林、GBDT、Extra Trees、XGBoost 等传统模型以及时序注意力融合深度学习模型,对单次缺勤时长进行预测。当前深度学习模型以 `8` 步历史缺勤事件窗口为基础,将 `15` 个序列特征与 `13` 个静态特征进行融合建模。在系统层面,用户输入关键业务字段后,系统返回预测缺勤时长、风险等级、风险概率、推荐模型和置信度,并通过 `SHAP` 局部解释展示本次预测中哪些因素在推高或降低缺勤风险。 -### 5. 系统设计与实现 +### 5. 员工画像与群体聚类 -本研究的最后一个核心内容是将上述算法和分析功能集成到一个完整的系统中。系统采用前后端分离架构,后端使用Python Flask框架,负责数据处理、模型训练和API接口提供;前端使用Vue 3框架配合Element Plus UI组件库和ECharts图表库,负责数据展示和用户交互。系统包含四个核心功能模块:数据概览模块(Dashboard)、影响因素分析模块(FactorAnalysis)、缺勤预测模块(Prediction)和员工画像模块(Clustering)。后端采用MVC分层架构,core层负责算法实现(数据预处理、特征挖掘、模型训练、聚类分析),services层负责业务逻辑,api层负责接口路由。前端采用组件化设计,封装ChartComponent和ResultCard等公共组件,提高代码复用性。系统开发完成后,将进行功能测试、性能测试和用户体验测试,确保系统的稳定性和可用性。最终,系统将为企业提供一套完整的人力资源考勤数据智能分析解决方案,实现从数据录入、可视化统计、深度归因分析到精准风险预测和人群画像划分的全流程功能。 +本研究的第五个核心内容是利用 `K-Means` 聚类算法对员工进行分群,展示不同群体在年龄、司龄、加班、通勤、BMI 和缺勤等方面的典型特征。系统可自动生成群体名称和群体说明,例如“高压通勤型”“稳定低风险型”“轮班负荷型”等,并通过雷达图、散点图和统计表格展示聚类结果。该部分有助于从人群层面发现缺勤模式差异,为企业实施分层管理策略提供依据。 + +### 6. 系统设计与实现 + +本研究最后将上述分析与算法能力集成为一个完整系统。系统采用前后端分离架构,后端使用 Python Flask 框架提供数据、理论分析、预测和聚类接口,前端使用 Vue 3、Element Plus 和 ECharts 实现可视化展示与交互。系统页面包括数据概览、影响因素分析、`JD-R` 理论分析、缺勤预测和员工画像五个核心页面。后端通过 `api - services - core` 分层组织业务逻辑,前端通过路由和页面组件组织界面结构,最终形成一个既能做展示、又能做分析、还能做理论解释的综合性毕设系统。 --- @@ -54,15 +58,15 @@ ### 技术架构 -本研究采用前后端分离的架构设计,确保系统的可维护性和可扩展性。后端技术栈选择Python作为主要开发语言,使用Flask轻量级Web框架构建RESTful API接口,利用scikit-learn和XGBoost库实现机器学习算法,使用pandas和numpy进行数据处理和分析。前端技术栈选择Vue 3作为前端框架,配合Element Plus UI组件库实现美观的用户界面,使用ECharts图表库实现丰富的数据可视化效果。数据存储采用CSV文件格式,便于数据导入导出和模型训练。整个架构遵循MVC设计模式,后端分为core(算法层)、services(业务逻辑层)、api(接口层)三层,前端分为views(页面层)、components(组件层)、api(调用层)三层,各层职责清晰,便于开发和维护。 +本研究采用前后端分离架构设计。后端使用 Python 作为主要开发语言,基于 Flask 构建 RESTful API;利用 pandas 和 numpy 完成数据处理,利用 scikit-learn 和 XGBoost 完成传统模型训练与群体分析,利用 PyTorch 完成深度学习时序建模。前端使用 Vue 3、Element Plus 和 ECharts 实现页面展示、图表交互与结果可视化。数据存储采用 CSV 文件与模型文件并行管理的方式,便于数据生成、训练与部署。 -### 算法方法 +### 算法与理论方法 -在算法层面,本研究采用了多种机器学习技术,形成完整的分析流程。首先,数据预处理阶段,针对数据集中的21个特征字段,采用不同的处理方法:对于类别型特征(如Reason for absence、Education、Social drinker等),使用OneHotEncoder进行独热编码,将其转换为数值型特征;对于数值型特征(如Transportation expense、Age、Work load等),使用StandardScaler进行标准化处理,消除量纲差异,提高模型训练效果。其次,特征挖掘阶段,使用pandas计算特征间的皮尔逊相关系数,生成相关性矩阵,用于热力图展示;使用训练好的随机森林模型提取feature_importances_属性,计算各特征的重要性得分,用于特征重要性排序。再次,预测模型构建阶段,采用两种回归算法:随机森林和XGBoost,这两种算法都具有较好的泛化能力和抗过拟合能力,适合处理多维度特征。模型训练时采用交叉验证方法,使用网格搜索优化超参数,使用均方误差(MSE)、决定系数(R²)等指标评估模型性能。最后,聚类分析阶段,使用K-Means算法对员工进行无监督聚类,通过肘部法则确定最佳聚类数量,将员工划分为3-4个群体,并计算每个簇的中心点数据,用于雷达图展示。 +在方法层面,本研究将数据驱动方法与心理学理论方法结合起来。首先,基于业务规则和企业场景生成中国企业员工缺勤事件数据集,并补充 `JD-R` 理论相关字段。其次,在特征工程阶段构建加班通勤压力指数、健康风险指数、家庭负担指数、缺勤历史强度等业务衍生变量,同时构建工作要求指数、工作资源指数、个人资源指数、`JD-R` 平衡度、倦怠风险指数和工作投入指数等理论复合指标。再次,在建模阶段采用多种传统树模型与时序深度学习模型完成缺勤时长预测,并通过模型对比评估不同方法的效果。最后,在解释阶段引入 `SHAP` 方法,从全局和局部两个层面说明模型为何做出当前预测,并将结果按 `JD-R` 理论维度聚合,增强解释性。 ### 开发流程 -本研究采用敏捷开发方法,按照以下流程进行:首先进行需求分析,明确系统的功能需求和非功能需求,确定系统的核心功能模块和用户交互流程;然后进行系统设计,包括架构设计、数据库设计、接口设计和UI设计,绘制系统架构图、时序图等设计文档;接着进行数据预处理,对UCI数据集进行清洗、编码、归一化等处理,生成可用于模型训练的干净数据;随后进行模型训练,分别训练随机森林、XGBoost和K-Means模型,评估模型性能,保存训练好的模型文件;然后进行前端开发,使用Vue 3开发四个核心页面,实现数据可视化、表单交互等功能;接着进行接口对接,后端提供RESTful API接口,前端通过axios调用接口获取数据,实现前后端数据交互;最后进行测试优化,进行功能测试、性能测试和用户体验测试,修复bug,优化系统性能,确保系统稳定可用。整个开发过程中,采用迭代开发的方式,每个阶段完成后进行评审和调整,确保项目按时高质量完成。 +本研究采用迭代开发方式推进。首先完成需求分析与文献梳理,明确系统功能范围、研究问题与理论基础;其次完成数据集生成逻辑、字段设计、接口设计和页面原型设计;随后实现数据概览、影响因素分析、`JD-R` 分析、预测和聚类等模块;再进行模型训练、接口联调与前端集成;最后开展功能测试、结果分析、论文撰写与答辩准备。整个过程强调“代码实现与论文表达同步”,确保文档、系统和实验结果保持一致。 --- @@ -70,15 +74,15 @@ ### 系统成果 -本研究预期完成一个功能完整、界面美观、操作便捷的员工缺勤分析与预测系统。该系统将包含四个核心功能模块:数据概览模块(Dashboard)将展示KPI指标卡、缺勤原因分布饼图、月度趋势折线图、星期几热力图等可视化图表,让管理者一目了然地了解企业整体考勤状况;影响因素分析模块(FactorAnalysis)将展示特征重要性排序条形图、相关性热力图、群体对比分析柱状图,帮助管理者识别影响缺勤的关键因素;缺勤预测模块(Prediction)将提供交互式表单,支持17个特征输入,实时返回预测结果和风险等级,为HR提供决策支持;员工画像模块(Clustering)将展示K-Means聚类结果,通过雷达图和散点图呈现不同员工群体的特征画像,为精细化管理提供依据。系统将采用响应式设计,支持不同屏幕尺寸的访问,具有良好的用户体验。 +本研究预期完成一个功能完整、结构清晰、适合答辩展示的员工缺勤分析、解释与预测系统。系统将能够完成缺勤统计展示、趋势分析、关键因素挖掘、`JD-R` 理论解释、单次缺勤预测、`SHAP` 解释和员工群体画像展示等任务,形成覆盖“统计 - 分析 - 解释 - 预测 - 画像”的完整功能链条。 -### 模型性能 +### 模型与分析成果 -在模型性能方面,本研究预期达到以下目标:预测模型的准确率(R²)达到80%以上,均方误差(MSE)控制在合理范围内,模型具有良好的泛化能力,能够在测试集上保持稳定的预测效果。特征重要性排序结果将具有可解释性,能够识别出对缺勤影响最大的几个特征,如通勤距离、工作负荷、饮酒习惯等,这些发现将与实际业务场景相符,具有实践指导意义。相关性分析将揭示特征间的关系,特别是生活习惯特征与缺勤时长之间的关联,为企业制定管理制度提供数据支持。K-Means聚类结果将具有明显的群体差异,每个聚类群体在多个维度上呈现不同的特征分布,能够为HR提供针对性的管理建议。所有模型结果都将通过可视化图表直观展示,便于理解和应用。 +在结果层面,预期形成一套较完整的缺勤分析方法体系:通过特征重要性与相关性分析识别影响缺勤的核心因素;通过 `JD-R` 维度分析、倦怠/投入分析和双路径分析解释缺勤形成机制;通过传统模型和深度学习模型完成缺勤时长预测;通过 `SHAP` 解释说明模型结果;通过聚类分析识别不同员工群体的缺勤模式。上述结果将共同支撑论文的研究结论与管理建议。 ### 论文成果 -本研究预期完成一篇8000字以上的本科毕业论文,论文将包含以下几个核心部分:引言部分阐述研究背景、研究目的和研究意义,介绍国内外研究现状;系统设计部分详细描述系统的架构设计、功能模块设计、数据库设计和接口设计;算法实现部分详细介绍数据预处理、特征挖掘、预测模型和聚类分析的算法原理和实现过程;实验分析部分展示系统的功能演示、模型性能评估、特征重要性分析和聚类结果分析;结论与展望部分总结研究成果,指出研究的创新点和局限性,展望未来的研究方向。论文将采用规范的学术写作风格,逻辑清晰,论证充分,图表丰富,能够全面展示本研究的成果和价值。论文将通过查重检测,确保学术诚信,达到本科毕业论文的质量要求。 +本研究预期完成一篇结构规范、逻辑清晰、与系统实现一致的本科毕业论文。论文将系统阐述研究背景、理论基础、系统设计、算法实现、实验分析和总结展望,并突出本课题在“`JD-R` 理论与员工缺勤分析结合”“可解释预测分析”“系统化实现”三个方面的特色。 --- @@ -88,19 +92,19 @@ **第一阶段:开题准备(2025.12.22-2026.01.18)** -在此阶段,主要任务是确认论文题目,深入理解研究需求和目标。首先,广泛查阅国内外相关文献,了解员工缺勤分析、特征挖掘、机器学习预测等领域的研究现状,梳理相关理论和方法。其次,仔细研读UCI Absenteeism数据集的文档,理解数据集的字段含义、数据分布和特征类型,为后续分析奠定基础。然后,撰写开题报告,明确研究目的、研究意义、研究内容、技术路线和预期成果,与指导教师进行沟通,根据反馈意见修改完善。最后,制定详细的实施计划,确定系统的功能模块和技术选型,为后续开发做好准备。 +在此阶段,主要任务是确认论文题目、梳理研究问题并明确理论与技术路线。重点包括查阅员工缺勤分析、组织行为、机器学习预测和 `JD-R` 理论等相关文献,明确系统功能边界与研究重点,完成开题报告撰写并根据指导意见修改完善。 **第二阶段:系统设计与原型开发(2026.01.19-2026.03.01)** -在此阶段,主要任务是完成系统的详细设计和简单原型的开发。首先,进行系统架构设计,确定前后端分离的技术架构,绘制系统架构图和功能模块图。其次,进行数据库设计,确定数据存储方案,设计数据表结构。然后,进行接口设计,定义前后端交互的API接口规范。接着,搭建开发环境,配置Python开发环境、Vue开发环境和相关依赖库。随后,开始原型开发,首先实现数据预处理功能,对UCI数据集进行清洗和编码;然后实现简单的特征挖掘功能,计算特征重要性;接着实现前端的基础框架,搭建Vue项目,配置路由和UI组件库;最后,完成简单的预测功能原型,验证技术方案的可行性。 +在此阶段,主要任务是完成系统总体设计和关键模块原型开发。包括数据字段设计、接口设计、页面原型设计、数据生成逻辑实现、基础分析接口实现,以及前端基础页面搭建,验证技术方案的可行性。 **第三阶段:系统开发与论文撰写(2026.03.02-2026.03.31)** -在此阶段,主要任务是完成系统的完整开发和论文初稿的撰写。首先,完善后端算法模块,实现数据预处理、特征挖掘、模型训练和聚类分析的完整功能,训练随机森林、XGBoost和K-Means模型,保存模型文件。其次,完善后端API接口,提供数据统计、特征分析、预测推理和聚类结果的RESTful接口。然后,开发前端页面,完成Dashboard、FactorAnalysis、Prediction和Clustering四个核心页面,实现数据可视化、表单交互和结果展示功能。接着,进行前后端联调,确保数据交互正常,功能完整可用。同时,开始撰写论文,按照论文结构逐步完成各个章节的写作,包括引言、系统设计、算法实现、实验分析等部分。 +在此阶段,主要任务是完成系统核心功能开发和论文初稿撰写。重点包括传统模型与深度学习模型训练、`JD-R` 分析模块实现、`SHAP` 解释模块实现、预测页面与聚类页面完善,以及论文章节的逐步撰写。 **第四阶段:测试优化与答辩准备(2026.04.01-2026.05.10)** -在此阶段,主要任务是完善系统、优化性能、完成论文和准备答辩。首先,进行系统测试,包括功能测试、性能测试和兼容性测试,修复发现的bug,优化系统性能,确保系统稳定可靠。其次,完善论文内容,根据系统实现情况调整论文描述,补充实验结果和分析,确保论文与实际成果一致。然后,进行论文格式调整,按照学校要求调整论文格式、字体、排版等,准备参考文献列表。接着,准备答辩材料,制作答辩PPT,梳理研究思路和成果,准备答辩演讲稿。最后,进行预答辩演练,与同学或指导教师进行模拟答辩,根据反馈意见调整PPT和演讲稿,确保答辩顺利进行。 +在此阶段,主要任务是开展系统测试、结果分析、论文修改和答辩准备。包括功能测试、接口测试、实验结果整理、论文格式调整、答辩 PPT 制作与模拟答辩演练,确保系统成果与论文材料能够支撑正式答辩。 --- @@ -120,4 +124,4 @@ [7] Harrison D A, Martocchio J J. Time for absenteeism: A 20-year review of origins, offshoots, and outcomes[J]. Journal of management, 1998, 24(3): 305-350. -[8] Ngai E W T, Chau D C K, Chan T L A. Information technology, operational, and management research on productivity: A study of executive perceptions[J]. International Journal of Production Economics, 2011, 133(2): 777-786. \ No newline at end of file +[8] Ngai E W T, Chau D C K, Chan T L A. Information technology, operational, and management research on productivity: A study of executive perceptions[J]. International Journal of Production Economics, 2011, 133(2): 777-786. diff --git a/frontend/src/views/Clustering.vue b/frontend/src/views/Clustering.vue index fb63666..6549ed0 100644 --- a/frontend/src/views/Clustering.vue +++ b/frontend/src/views/Clustering.vue @@ -105,7 +105,7 @@ async function initScatterChart() { type: 'scatter', data: points, symbolSize: 9, - name: `群体${Number(id) + 1}` + name: data.cluster_names?.[id] || `群体${Number(id) + 1}` })) }) }