r语言员工离职_kaggle案例:如何预测员工离职的可能性?

原标题:kaggle案例:如何预测员工离职的可能性?

本文转载自R语言中文社区

ID:R_shequ

作者:邬书豪,车联网数据挖掘工程师 ,R语言中文社区专栏作者。微信ID:wsh137552775

知乎专栏:https://www.zhihu.com/people/wu-shu-hao-67/activities

案例背景介绍:Our example concerns a big company that wants to understand why some of their best and most experienced employees are leaving prematurely. The company also wishes to predict which valuable employees will leave next.

################### ============== 加载包 =================== #################library(plyr) # Rmisc的关联包,若同时需要加载dplyr包,必须先加载plyr包library(dplyr) # filter()library(ggplot2) # ggplot() library(DT) # datatable() 建立交互式数据表library(caret) # createDataPartition() 分层抽样函数library(rpart) # rpart()library(e1071) # naiveBayes()library(pROC) # roc()library(Rmisc) # multiplot() 分割绘图区域################### ============= 导入数据 ================== #################hr

描述性分析

################### ============= 描述性分析 ================== ###############str(hr) # 查看数据的基本数据结构summary(hr) # 计算数据的主要描述统计量# 后续的个别模型需要目标变量必须为因子型,我们将其转换为因子型hr$left

员工对公司满意度与是否离职的箱线图

离职员工对公司的满意度较低,大多集中在0.4左右;

# 绘制绩效评估与是否离职的箱线图box_eva

绩效评估与是否离职的箱线图

离职员工的绩效评估较高,在0.8以上的较为集中;

# 绘制平均月工作时长与是否离职的箱线图box_mon

离职员工的平均月工作时长较高,一多半超过了平均水平(200小时)

# 绘制员工在公司工作年限与是否离职的箱线图box_time

离职员工的工作年限在4年左右

# 合并这些图形在一个绘图区域,cols = 2的意思就是排版为一行二列multiplot(box_sat, box_eva, box_mon, box_time, cols = 2)

## 探索参与项目个数、五年内有没有升职和薪资与离职的关系# 绘制参与项目个数条形图时需要把此变量转换为因子型hr$number_project

员工参与项目个数与是否离职的百分比堆积条形图

参加项目数越多的员工离职率越大(去除项目数为2的样本)

# 绘制5年内是否升职与是否离职的百分比堆积条形图bar_5years

5年内是否升职与是否离职的百分比堆积条形图

五年内没有升职的员工的离职率比较大

# 绘制薪资与是否离职的百分比堆积条形图bar_salary

薪资与是否离职的百分比堆积条形图

薪资越高离职率越低

# 合并这些图形在一个绘图区域,cols = 3的意思就是排版为一行三列multiplot(bar_pro, bar_5years, bar_salary, cols = 3)

建模预测之回归树

############## =============== 提取优秀员工 =========== #################### filter()用来筛选符合条件的样本hr_model = 0.70 | time_spend_company >= 4 | number_project > 5)############### ============ 自定义交叉验证方法 ========== ################### 设置5折交叉验证 method = ‘cv’是设置交叉验证方法,number = 5意味着是5折交叉验证train_control

################ =========== 分成抽样 ============== ##########################set.seed(1234) # 设置随机种子,为了使每次抽样结果一致# 根据数据的因变量进行7:3的分层抽样,返回行索引向量 p = 0.7就意味着按照7:3进行抽样,# list=F即不返回列表,返回向量index

建模预测之朴素贝叶斯

################### ============ Naives Bayes =============== #################nbmodel

模型评估+应用

################### ================ ROC ==================== ################## 使用roc函数时,预测的值必须是数值型pred_rpart

回归树的ROC曲线roc_nb

朴素贝叶斯ROC曲线图

回归树的AUC值(0.93) > 朴素贝叶斯的AUC值(0.839)

最终我们选择了回归树模型做为我们的实际预测模型######################### ============= 应用 =============##################### 使用回归树模型预测分类的概率,type=‘prob’设置预测结果为离职的概率和不离职的概率pred_end

最终我们会生成一个预测结果表

预测结果表第一列代表:员工不离职概率(pred.0)预测结果表第二列代表:员工离职概率(pred.1)预测结果表第三列代表:员工是否离职(pred)

“阅读原文”在这里点返回搜狐,查看更多

责任编辑:

你可能感兴趣的:(r语言员工离职)