根据Kaggle:Human Resource Analysis的数据对员工离职情况作了简单的分析。
1、数据集介绍
数据集14999条职工信息,其中3571人已离职,11428未离职。
因变量包括:
satisfaction_level对公司的满意程度、last_evaluation绩效评估、 number_project参与项目数、average_montly_hours平均每月工作时长、time_soend_company工作年限、work_accident是否存在工作差错、promotion_last_5years五年内是否升职、sales职业、salary薪资水平。
从变量相关性上可以看出几个数值比较明显的关系:公司绩效和项目数量之间、公司绩效和平均每月上班时间、离职率与公司满意度之间。
变量间相关性
2、探究离职与特征之间的模型
为例探究离职与特征变量之间的关系,分别采用逻辑回归、随机森林、支持向量机三种模型,准确率分别为0.79、0.98、0.95,显然随机森林的预测结果更好。
采用随机森林对员工离职情况分析,发现影响因素较高的是对企业满意度、项目数量、工作年龄、每月工作时长以及升职情况。
随机森林特征权重
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
data= pd.read_csv("C:/Users/Administrator/PycharmProjects/hr_employees/HR_comma_sep.csv")
data.dtypes
#############2、模型预判 ######################
# LR测试
LR=LogisticRegression()
LR.fit(X_train,y_train)
print('LR\'s accuracy rate:',LR.score(X_test,y_test))
#随机森林测试
rmf=RandomForestClassifier()
rmf.fit(X_train,y_train)
print('rmf\'s accuracy rate:',rmf.score(X_test,y_test))
# SVM测试
svm_model=svm.SVC()
svm_model.fit(X_train,y_train)
print('svm\'s accuracy rate:',svm_model.score(X_test,y_test))
'''
LR's accuracy rate: 0.791466666667
rmf's accuracy rate: 0.984666666667
svm's accuracy rate: 0.948533333333
三个模型里随机森林效果最好
3、在职员工离职率评判
在11428名在职员工中,有多少是有较强离职倾向的?通过随机森林对现存的在职员工;离职率进行判定。
发现离职概率在50%~100%之间的有35个人,其中4人100%会离职。
100%离职
3780是技术研发人员,工资水平为低水平low(权重排第九0.003886),虽然满意度、绩效、项目、时间、工龄都很高,因此模型认为该员工100%会离职。
6263是项目支撑、工资水平低,虽然满意度、绩效高,但项目多、用时多、工龄高,判断其离职显然是合理。
6448是技术人员,工资高,但满意度、绩效都不好,认为离职合理。
9781是销售,工资低,满意度、绩效都不高,工作时间也比较少,认为是合理的。
查看四人信息,认为离职是合理的,模型没有产出明显的、不可解释的结果。
4、措施采取
对应这35人中离职倾向高,但满意度高、绩效高、项目多、工作时间高、无工作错误的员工,采取措施进行挽留。
挽留对象
除7762员工外,都是因为工资水平低,但项目多工作时间多,产出与成果间无法呼应的原因导致的。建议对3780、6263、13826、11615、8975五人工资调整,将低水平工资调至中等、高水平;
7762员工是项目支撑人员、工资水平中等,项目多、工作时长273小时/月、工龄6年。在平均员工工作时长200的情况下,工作时长在全公司前3。建议在其下部分项目增加项目支撑人手。
每月工作时间
网友评论