前言:
2020年初一场疫情使得众多公司面临裁员,众多员工无奈选择离职,那么该如何使用python这一编程语言分析员工流失。找出员工离开公司的原因,并学会预测谁将离开公司。
在过去,大多数的重点是“比率”,如自然减员率和保留率。人力资源经理计算以前的比率,尝试使用数据仓库工具预测未来的比率。这些利率反映了动荡的总体影响,但这是一半的情况。另一种方法可以是除了聚合之外,还将重点放在单个记录上。
有很多关于客户流失的案例研究。在客户流失中,您可以预测客户将在什么时候停止购买。员工流失与客户流失相似。它主要关注的是员工而不是客户。在这里,您可以预测谁,以及员工何时终止服务。员工流失成本很高,而增量式的改进将带来显著的效果。这将有助于我们设计更好的留用计划和提高员工满意度。
在本教程中,您将讨论以下主题:
- 员工流失分析
- 数据加载与理解特征
- 探索性数据分析和数据可视化
- 聚类分析
- 利用梯度增强树建立预测模型。
- 评价模型性能
- 结语
员工流失分析
员工流失可以定义为智力资产从公司或组织中泄露或离开。或者,用简单的话来说,你可以说,当员工离开组织时,被称为“流失”。另一个定义可以是当一个群体中的一个成员离开一个群体时,也就是所谓的“搅动”。
研究发现,员工流失受年龄、任期、薪酬、工作满意度、工资、工作条件、成长潜力和员工公平观念等因素的影响。其他一些变量,如年龄、性别、种族、教育程度和婚姻状况,是预测员工流失的重要因素。在某些情况下,比如拥有利基技能的员工就很难被取代。它影响到现有雇员的持续工作和生产力。作为替代者,收购新员工有其成本,如招聘成本和培训成本。此外,新员工将需要时间学习技能,在类似水平的技术或商业专业知识的老员工。组织通过应用机器学习技术预测员工流失来解决这个问题,这有助于他们采取必要的行动。
以下几点有助于您更好地理解员工和客户的流失:
- 企业选择雇佣员工,而在市场营销中,你却不能选择你的客户。
- 员工将是你公司的代言人,集体地,员工生产你公司所做的每一件事。
- 失去顾客会影响收入和品牌形象。与保留现有客户相比,获得新客户是困难和昂贵的。员工流失对公司一个组织来说也是痛苦的。寻找和培训替代者需要时间和精力。
与客户流失相比,员工流失具有独特的动态特性。它帮助我们设计更好的员工留用计划,提高员工满意度。数据科学算法可以预测未来的波动。
导入模块
加载数据集
让我们首先使用熊猫的ReadCSV函数加载所需的人力资源数据集。您可以从链接.
加载数据集之后,您可能希望了解更多有关它的信息。您可以使用info()检查属性、名称和数据类型。
您可以将10个属性详细描述为:
- 满意度水平:这是员工满意点,从0到1不等.
- 最后一次评估:由雇主对业绩进行评估,其范围也从0到1。
- Number_Projects:分配给员工的项目数量是多少?
- 平均每月工作时数:一个月内雇员平均工作时数是多少?
- 时间消耗公司:时间消耗公司是指员工的经验。雇员在公司工作的年数。
- 工伤事故:员工是否发生过工伤事故。
- 晋升5年:员工是否在过去5年中获得过晋升。
- 部门:员工工作部门/部门。
- 薪资:员工的薪资水平,如低、中、高。
- 左:员工是否已离开公司。
让我们跳进数据洞察
在给定的数据集中,有两种类型的员工--一种是留下来的,另一种是离开公司的。因此,您可以将数据分成两组,并比较它们的特点。在这里,您可以使用groupby()和means()函数找到这两个组的平均值。
在这里,你可以解释说,离开公司的员工满意度低,晋升率低,薪水低,与留在公司的员工相比,他们工作得更多。
大熊猫的描述功能便于获取各种汇总统计数据。此函数返回数据的计数、平均值、标准差、最小值和最大值以及分位数。
数据可视化
雇员离开
让我们查查还剩多少员工?
在这里,您可以使用Matplotlib绘制条形图。条形图适用于离散变量计数的显示。
在这里,你可以看到大约15000人留下了3,571人,并留下了11,428人。剩下的雇员人数占总就业人数的23%。
项目数目
类似地,您还可以绘制一个条形图来计算部署在多少个项目上的员工数量?
在公司工作的时间
同样,您也可以绘制一个条形图来根据多少经验来计算员工的数量?
大多数员工有2-4年的工作经验。而且,3年和4年经验丰富的员工之间存在着巨大的差距。
使用Seborn的子图
这是您可以一个一个地分析这些特性的方法,但这将是很费时的。更好的选择是使用Seborn库并使用子图在一次运行中绘制所有图。
您可以在上面的可视化中观察到以下几点:
- 大多数员工都是从3-5开始做这个项目的。
- 在3年到4年的经验员工之间有一个巨大的下降。
- 剩下的雇员人数占总就业人数的23%。
- 在过去的5年里,获得晋升的员工数量明显减少了。
- 销售部的员工人数最多,其次是技术和支持部门。
- 大多数雇员的工资要么中等,要么低。
您可以在上面的可视化中观察到以下几点:
- 那些项目数量超过5个的员工离开了公司。
- 完成了6个和7个项目的员工离开了公司,似乎他们的工作负担过重。
- 有五年工作经验的员工因过去5年没有晋升而离职更多,超过6年的工作经验因对公司的感情而不离职。
- 那些在过去5年里升职的人没有离开,也就是说,所有离开的人在过去的5年里都没有得到升职。
数据分析和可视化摘要:
以下特点最能影响一个人离开公司:
- 晋升:如果员工在过去5年没有得到升职,那么他们辞职的可能性要大得多。
- “公司时代”:在这里,三年制看起来是员工职业生涯中的一个关键时刻。他们中的大多数人都是在三年左右辞职的。另一个重要的问题是6年,在这一点上,员工不太可能离开。
- 项目数量:员工敬业是影响员工离职的另一个关键因素。3到5个项目的员工离开公司的可能性较小。项目数量越来越少的员工可能会离开。
- 薪资:在中、低薪资组中辞职的大多数员工。
让我们找出离开的员工群体。你可以观察到,任何员工留下来或离开的最重要因素是满意程度和在公司的表现。所以让我们用聚类分析把他们聚集在一组人中。
聚类分析
在这里,离开公司的员工可分为3类:
- 高满意度和高评价(在图中用绿色阴影),你也可以称他们为优胜者。
- 低满意度和高评价(由蓝色阴影(在图中的绿色阴影),你也可以说他们沮丧。
- 适度的满意度和适度的评价(在图中用灰色阴影),你也可以称它们为“坏匹配”。
建立预测模型
预处理数据
许多机器学习算法都需要数值输入数据,因此需要在数值列中表示分类列。
为了对这些数据进行编码,您可以将每个值映射到一个数字。例如,薪资列的值可以表示为
低:0、中等:1和高:2。
这个过程被称为标签编码,SskLearning可以方便地为您使用LabelEncoder完成这一过程。
在这里,您导入了预处理模块并创建了Label Encoder对象。使用此LabelEncoder对象,您可以将“工资”和“部门”列转换为数字列。
分体式列车及测试装置
要理解模型性能,将数据集划分为训练集和测试集是一种很好的策略。
让我们使用函数TRANS_TEST_Split()来拆分数据集。您需要传递3个参数特性、目标和test_set大小。此外,您还可以使用随机状态来随机选择记录。
在这里,数据集按70:30的比例分为两部分。这意味着70%的数据将用于模型训练,30%用于模型测试。
模型建立
让我们建立一个员工流失预测模型。
在这里,您将使用梯度增强分类器来预测搅拌。
首先,导入GradientBoostingClassfier模块并使用GRadientBoostingClassfier()函数创建梯度增强分类器对象。
然后,使用FIT()在火车集中拟合模型,并使用PRECT()对测试集执行预测。
评价模型性能
好吧,你的分类率是97%,被认为是正确的。
精度:精确是指精确,即你的模型有多精确。换句话说,你可以说,当一个模型做出预测时,它多久才是正确的。在你的预测案例中,当你的梯度提升模型预测一个员工将要离开时,该员工实际上95%的时间离开了。
回忆:如果有一个员工离开了测试集和你的梯度提升模型可以识别92%的时间。
结语
恭喜你,你终于完成了本教程!
在本教程中,您已经了解了什么是员工流失?,它与客户流失有何不同,使用matplotlib和seabelln对员工流失数据集进行探索性数据分析和可视化,使用python Scikit-Learning包进行建模和评估。
我期待听到任何反馈或问题。你可以留下评论来问一个问题,我会尽力回答的。