# talent_drain **Repository Path**: cp2807/talent_drain ## Basic Information - **Project Name**: talent_drain - **Description**: 223311 - **Primary Language**: Python - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-01-26 - **Last Updated**: 2026-01-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README Markdown # 📉 员工离职预测系统 (Talent Drain Prediction) ## 📖 项目简介 (Project Overview) 本项目旨在利用机器学习技术解决企业人力资源管理中的痛点——**员工离职预测**。通过分析员工的个人信息、工作状态、满意度等多维数据,提前识别潜在的离职风险,帮助企业制定挽留策略。 为了突破单一模型的性能瓶颈,本项目采用了 **两层 Stacking 集成学习架构**,结合了 **Bagging (随机森林)** 和 **Boosting (XGBoost)** 的优势,并通过逻辑回归进行最终的加权融合,实现了比单模型更高的预测精度(AUC)。 ## 🏗️ 核心技术架构 (Architecture) ### 1. 模型策略 (Stacking Ensemble) 本项目采用 "并行基模型 + 串行元模型" 的堆叠策略: * **第一层 (Base Layer)**: * 🌲 **Random Forest (随机森林)**:利用 Bagging 思想,降低方差,增强鲁棒性。 * 🚀 **XGBoost**:利用 Boosting 思想,降低偏差,捕捉非线性特征。 * **第二层 (Meta Layer)**: * ⚖️ **Logistic Regression (逻辑回归)**:接收第一层模型的输出概率作为新特征,重新拟合权重,输出最终预测结果。 ### 2. 特征工程 (Feature Engineering) 在 `src/utils` 中实现了深度的特征挖掘: * **数据清洗**:剔除无用字段(如 ID、单一值特征)。 * **数值变换**:对长尾分布(如月收入、工龄)进行 Log 对数变换。 * **关键衍生特征**: * `YearsStabilityRatio`: 职位稳定性比率(当前职位年限 / 司龄)。 * `CareerCompactness`: 职业紧凑度(总工龄 / 年龄)。 * `JobHopRate`: 跳槽频率。 * `YearsUntilLastPromotion`: 晋升潜伏期。 ## 📂 工程目录结构 (Directory Structure) ```text talent_drain/ ├── data/ # 🗄️ 数据中心 │ ├── train.csv # 训练集 │ ├── test.csv # 测试集 │ └── img/ # 📊 EDA 可视化分析图表 │ ├── 01_平均司龄_跳槽频率.png │ ├── 03_月收入分布.png │ ├── XGBoost筛选.png │ └── ... (其他分析图表) │ ├── notebooks/ # 📓 Jupyter 探索性分析笔记 │ └── eda_lys.ipynb │ ├── src/ # 🛠️ 核心源码 │ ├── EDA_mxy/ # 数据探索与特征筛选脚本 │ │ ├── XGBoost特征筛选.py │ │ └── 每个字段与是否离职的关系.py │ │ │ ├── features/ # 🚀 训练与预测主流程 │ │ ├── train.py # [入口] 模型训练脚本 │ │ └── predict.py # [入口] 预测脚本 │ │ │ ├── models/ # 💾 模型保存路径 │ │ ├── rf_model.pkl # 随机森林基模型 │ │ ├── xgb_model.pkl # XGBoost基模型 │ │ └── last_model.pkl # 最终 Stacking 元模型 │ │ │ └── utils/ # 🔧 工具包 │ ├── feature_one.py # 特征预处理逻辑 │ ├── log.py # 日志模块 │ ├── common.py # 公共配置 │ └── 随机森林(特征工程).py # 特定模型的特征处理 │ ├── requirements.txt # 📦 项目依赖库 └── README.md # 📄 项目说明文档 🚀 快速开始 (Quick Start) 1. 环境准备 请确保您的 Python 环境(推荐 3.8+)已安装相关依赖: Bash pip install -r requirements.txt 2. 数据探索 (EDA) 如果您想查看数据特征与离职率的关系,可以运行 EDA 脚本或查看 data/img/ 下生成的图表: Bash python src/EDA_mxy/每个字段与是否离职的关系.py 生成的分析图表包括:年龄分布、薪资含金量、加班情况与离职率的热力图等。 3. 模型训练 运行训练脚本,程序将自动执行特征工程、模型训练并保存模型文件至 src/models/: Bash python src/features/train.py 4. 离职预测 使用训练好的 Stacking 模型对测试集进行预测,生成结果文件: Bash python src/features/predict.py 📊 数据分析亮点 (Data Insights) 本项目对数据进行了详尽的可视化分析(见 data/img/),主要发现包括: 薪资与离职:月收入较低的群体离职率显著偏高(见图 03_月收入分布.png)。 加班影响:高频加班人群的离职倾向明显高于不加班人群(见图 04_加班情况.png)。 职业生涯:跳槽频率较高且平均司龄较短的员工,再次离职的风险更大(见图 01_平均司龄_跳槽频率.png)。 特征重要性:通过 XGBoost 筛选出的关键特征包括 MonthlyIncome, Age, TotalWorkingYears 等(见图 XGBoost筛选.png)。