数据分析——员工离职预测

员工离职预测

  • 一. 题目描述
  • 二. 数据说明
  • 三. 步骤实现
  • 1.导入并查看
  • 2.数据探索性分析
  • 3.数据处理
  • 4.模型分析
  • 5.结果分析
  • (1) 可视化的结果分析
  • (2)特征选择结果分析
  • (3)多模型交叉验证结果分析

一. 题目描述

员工是否准备离职是困扰用人单位的问题,其关系到单位业务的开展及新人员的招聘,及时的分析出有离职倾向的员工成为关键的因素。数据主要包括影响员工离职的各种因素(工资、出差、工作环境满意度、工作投入度、是否加班、是否升职、工资提升比例等)以及员工是否已经离职的对应记录。

二. 数据说明

数据分为训练数据和测试数据,分别保存在pfm_train.csv和pfm_test.csv两个文件中。 其中训练数据主要包括1100条记录,31个字段,主要字段说明如下:
在这里插入图片描述

三. 步骤实现

1.导入并查看

首先进行观察使用的数据是csv文件格式,其中自变量30个,因变量为1个(是否离职)。数据集字符型字段有7个(BusinessTravel/Department/EducationField/Gender/JobRole/MaritalStatus/Over18/OverTime)数值型字段有24个。
导入需要的库

import pandas as pd
import numpy as np
import seaborn as sns
from sklearn.model_selection import train_test_split,cross_val_score
from sklearn.ensemble import RandomForestClassifier
from sklearn.tree import DecisionTreeClassifier
from sklearn.neighbors import KNeighborsClassifier
from sklearn import svm
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score
from sklearn import metrics 

导入数据

pd.set_option('display.max_columns',None)
pd.set_option('display.max_rows',None)
data_train = pd.read_csv('pfm_train.csv')
# 训练集总共1100条数据
data_test = pd.read_csv('pfm_test.csv')
# 测试集总共350条数据
data = pd.concat([data_train,data_test],axis = 0)

查看基本信息

data.head()
data.info()
data.describe()

在这里插入图片描述
删除常量

data.drop('EmployeeNumber',axis=1)
data.drop('Over18',axis=1)
data.drop('StandardHours',axis=1)

2.数据探索性分析

#-*- coding: utf-8 -*-
from matplotlib import pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei'] 
plt.title('人力资源总体情况')
labels = [u'离职',u'在职'] 
sizes = [data['Attrition'].value_counts()[1], data['Attrition'].value_counts()[0]] 
colors = ['c','pink'] 
patches,text1,text2 = plt.pie(sizes,labels=labels,colors=colors,autopct = '%3.2f%%', shadow = False, startangle =90, pctdistance = 0.6) 
plt.legend(loc="upper right",fontsize=10,bbox_to_anchor=(1.1,1.05),borderaxespad=0.3)
plt.axis('equal')
plt.show()
print('离职人员:',data['Attrition'].value_counts()[1])
print('在职人员:',data['Attrition'].value_counts()[0])
#离职人员178人,占比16.18%;在职人员922人,占比83.82%

在这里插入图片描述
#各个职位中离职和未离职人数占比——柱状图

data_JobRole=pd.crosstab(data.JobRole,data.Attrition)
data_JobRole.div(data_JobRole.sum(1).astype(float), axis=0).plot(kind='bar', stacked=True)

在这里插入图片描述

plt.figure(figsize=(10, 10))
data_Attrition_JobRole =data.groupby('JobRole').Attrition.count()
plt.pie(data_Attrition_JobRole, labels=data_Attrition_JobRole.index, autopct="%1.2f%%",startangle=90)
plt.legend()

在这里插入图片描述

3.数据处理

def resetAge(name):if (name < 24) & (name > 18) & (name == 58):return 1elif (name == 18) & (name == 48) & (name == 54) & (name == 57) & (name > 58) :return 0else:return 2def resetSalary(s):if s>0 & s<3725:return 0elif s>=3725 & s<11250:return 1else:return 2def resetPerHike(s):if s >= 22 & s < 25:return 0elif (s >= 11 & s < 14) | (s > 14 & s < 22):return 1else:return 2data['PercentSalaryHike'] = data['PercentSalaryHike'].apply(resetPerHike)
data['MonthlyIncome'] = data['MonthlyIncome'].apply(resetSalary)
data['Age'] = data['Age'].apply(resetAge)numerical_cols = data.select_dtypes(exclude = 'object').columns
categorical_cols = data.select_dtypes(include = 'object').columns
feature_cols=[col for col in numerical_cols if col not in ['EmployeeNumber','Over18','StandardHours']]
x_data=pd.concat([data[feature_cols],data[categorical_cols]],axis=1)
y_data=data['Attrition']
x_data=pd.get_dummies(x_data)

查看数据之间相关性

corr=x_data.corr()
corr

热力图进行表示

plt.figure(figsize=(16, 16))
sns.heatmap(corr,xticklabels=corr.columns.values,yticklabels=corr.columns.values)
plt.show()

在这里插入图片描述
也可以直接根据皮尔逊相关系数选择与要预测的属性列Attrition相关性最高的10个属性

features = data.corr()['Attrition'].abs().sort_values(ascending=False)[:11]
features.drop('Attrition', axis=0, inplace=True)
features = features.index
features

在这里插入图片描述

4.模型分析

进行编码并删除无用变量

cata_result = pd.DataFrame()
for i in data.columns:if data[i].dtype == 'O':cata = pd.DataFrame()cata = pd.get_dummies(data[i], prefix=i)cata_result = pd.concat([cata_result, cata], axis=1)for i in data.columns:if data[i].dtype == 'O':data = data.drop(i, axis=1)data = pd.concat([data, cata_result], axis=1)

代入模型

sep = 1100
X = data.iloc[0:sep,:].drop('Attrition',axis = 1)
y = data.iloc[0:sep,:]['Attrition']
data_test_use = data.iloc[sep:,:]
data_test_use1 = data_test_use.drop('Attrition',axis=1)X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.25,random_state=2)model = {'LR': LogisticRegression(), 'svm': svm.SVC(), 'RMF': RandomForestClassifier(random_state=10, warm_start=True,n_estimators=26,max_depth=6,max_features='sqrt'),'CART': DecisionTreeClassifier(), 'KNN': KNeighborsClassifier()}for i in model:model[i].fit(X,y)score = cross_val_score(model[i],X,y,cv=5,scoring='accuracy')print("%s:%.3f(%.3f)"%(i,score.mean(),score.std()))

逻辑回归效果最好
在这里插入图片描述
训练集准确度能达到90%,测试集能达到86.9%

5.结果分析

(1) 可视化的结果分析

从三个满意度进行分析
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

由图分析得,离职的员工对工作环境和关系的满意度出现了较低的评分,但中位数相当,故不作为决定性影响因素,而公司满意度出现了明显特征:离职员工的评分整体偏低,且离职人员对公司满意度整体波动较大。故公司满意度对员工离职的影响较大。
在这里插入图片描述

在这里插入图片描述

从性别上来看男性偏多。从年龄上看,离职的人比在职的人整体年龄偏低,并且 24之前和58岁的人员流动很大,而在年龄分段之内离职倾向不大,趋于缓和,部分的特数值没有离职人员。
在这里插入图片描述
在这里插入图片描述

从受教育程度上来看,受教育程度最高的,离职率越低,受教育程度低的,离职率高,而受教育程度中等的差别不大。从月收入来看,表现出明显的月收入低的人,离职的波动越大。
在这里插入图片描述
在这里插入图片描述

在职的人群中,不加班的占大多数,离职的人群中,加班所占比例较大。工作与生活平衡程度较低和较高的时候都容易出现离职现象

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

数据集中在0-4年,第2,3年离职的人数较多;距离上次升职时间为3年,跟目前管理之共事3年,出现离职现象较多。
在这里插入图片描述
在这里插入图片描述
研发部门的人离职率低,出差频率中等偏高的人更容易离职。

总体来说,离职人员约占总人数的16%,离职员工的月收入比在职员工偏低,,大学专业和出差频率两项有明显的影响,经常出差的人流动性大。男性员工离职的更多,单身职员的离职的概率比较大,职业角色里,代理销售的人员流动大。可以刻画出形象,离职的人特征偏向单身男性代理销售,经常出差且月收入偏低,对公司满意度较低。

(2)特征选择结果分析

特征选择是从多维度的特征中选取出表征明显的特征显得非常的重要。特征选择主要可以从数据相关性角度和信息增益的角度来考虑。皮尔森相关系数也称皮尔森积矩相关系数,是一种线性相关系数,是最常用的一种相关系数。记为r,用来反映两个变量X和Y的线性相关程度,r值介于-1到1之间,绝对值越大表明相关性越强。通过计算,影响程度最高的分别为工作年限,年龄,职业级别,三个工作年限,月收入,股票期权,工作满意度和参与度。

(3)多模型交叉验证结果分析

预测并分类我们首先可以想到逻辑回归,根据输出,在不调参情况下,首选的逻辑回归具有较好的准确率。接着比较朴素贝叶斯和逻辑回归。由于逻辑回归和朴素贝叶斯分类器都采用了极大似然法进行参数估计,所以它们会被经常用来对比。.两者比较明显的不同之处在于,逻辑回归属于判别式模型,而朴素贝叶斯属于生成式模型。具体来说,两者的目标虽然都是最大化后验概率,但是逻辑回归是直接对后验概率P(Y|X)进行建模,而朴素贝叶斯是对联合概率P(X,Y)进行建模,所以说两者的出发点是不同的。朴素贝叶斯分类器要求“属性条件独立假设”即,对于已知类别的样本x,假设x的所有属性是相互独立的。这就导致了两点与逻辑回归的不同之处:朴素贝叶斯的限制条件比逻辑回归更加严格,意味着逻辑回归的应用范围更广。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/56628.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

逾2500名选手竞跑乌鲁木齐冰雪马拉松

中新社乌鲁木齐1月13日电(记者 孙亭文) 2019乌鲁木齐丝绸之路冰雪马拉松(简称“冰马”)13日鸣枪开跑&#xff0c;逾2500名跑友在天山山麓的“冰天雪地”中竞跑。 1月13日&#xff0c;2019乌鲁木齐丝绸之路冰雪马拉松在乌鲁木齐市城南的天山脚下鸣枪开跑&#xff0c;逾2500名跑友…

html 跑步比赛小游戏,疯狂趣味跑步竞赛3D

疯狂趣味跑步竞赛3D是一款跑酷类型的休闲游戏&#xff0c;游戏在整体画面上搭配了最新的技术&#xff0c;使得游戏画面看起来非常华丽&#xff0c;人物的建模也很可爱。玩家在游戏中可以在各种风格的跑道上进行比赛&#xff0c;还可以在线跟别的玩家进行匹配。喜欢这款游戏的快…

oracle计算日期倒计时,时间倒算回去到了哪里?│机械倒数计时码表

Laura Lan蓝思晴 《大寫的蘿菈》主笔 华语圈知名钟表珠宝评论家&#xff0c;专精机械钟表赏析&#xff0c;亦对珠宝、生活、文化与艺术等各领域皆有着独到的见解。创办《引想力工作室》从事专业文案、顾问、讲习等工作。 所有不能实现的&#xff0c;制表大师们都曾经挖空心思研…

茂名天源石化等项目开工 石化业高质量发展看广东

目前来看&#xff0c;广东省已经拥有诸多国外化工巨头、大型民营炼化企业和不少国企的炼化项目&#xff0c;成为很多石化企业首选的项目落地基地。“石化业高质量发展看广东”&#xff0c;已经逐渐明朗。今年以来&#xff0c;已有恒力石化(惠州)PTA项目、东华能源(茂名)烷烃资源…

c++并行编程中的“锁”难题

linux服务器开发相关视频解析&#xff1a; 在并行程序中&#xff0c;锁的使用会主要会引发两类难题&#xff1a;一类是诸如死锁、活锁等引起的多线程Bug&#xff1b;另一类是由锁竞争引起的性能瓶颈。本文将介绍并行编程中因为锁引发的这两类难题及其解决方案。 1、用锁来防止…

恒力石化、茂名天源石化等项目开工 2025年广东石化产业营收力争超2万亿

目前来看&#xff0c;广东省已经拥有诸多国外化工巨头、大型民营炼化企业和不少国企的炼化项目&#xff0c;成为很多石化企业首选的项目落地基地。“石化业高质量发展看广东”&#xff0c;已经逐渐明朗。 今年3月31日&#xff0c;广东省发展改革委官网公布《广东省2021年重点建…

Linux中的线程

1.线程的基本概念 2.线程和进程的区别 线程安全 *线程的同步 线程的调度 线程的通信编程思想之多线程与多进程(1)——以操作系统的角度述说线程与进程_阳光日志-CSDN博客_多线程和多进程编程线程是什么&#xff1f;要理解这个概念&#xff0c;须要先了解一下操作系统的一些…

武汉超级计算机中心,加快打造“五个中心” 武汉率先开建人工智能计算中心...

(来源&#xff1a;武汉市发改委) 原标题&#xff1a;加快打造“五个中心” 武汉率先开建人工智能计算中心 从华为东莞松山湖基地运来的预制化模块箱体&#xff0c;正在光谷科学岛起步区被吊装&#xff0c;未来将被“拼装”成武汉重要的人工智能算力基础设施。3月1日&#xff0c…

产业丨国产数据库行业火热,厂商各有各的算盘

前言&#xff1a; 随着数字经济的不断发展&#xff0c;未来数据库发展有着四个趋势&#xff1a;开源、HTAP、云原生以及和大数据技术融合。 如今&#xff0c;随着众多企业入局&#xff0c;国产数据库正在打着一场激烈的翻身仗。 前言&#xff1a; 随着数字经济的不断发展&a…

不到一年涨粉849万,“神级账号”小鱼海棠背后成功的秘诀是什么?

如何能在短时间内精确吸粉百万&#xff0c;快速度过账号冷启动&#xff0c;跻身头部网红的行列&#xff1f;快手视频博主“小鱼海棠”就交出了一份完美的答卷。 凭借牢牢抓住与999个帅哥拍照这一创意点&#xff0c;“小鱼海棠”一战封神&#xff0c;成为网红界一匹飞速狂奔的黑…

灿谷集团荣获“公益践行奖”

2022年1月13-14日&#xff0c;“第十一届公益节暨企业社会责任嘉年华”在上海举行。在公益节上&#xff0c;灿谷集团凭借在履行企业社会责任方面的杰出表现&#xff0c;获评“2021年度公益践行奖”。 公益节设立于2011年&#xff0c;是国内首个由大众媒体联袂发起的以“公益”…

阿里P7被裁员,找工作小半年了,流程走着走着就没了

上一篇&#xff1a;幸好没去虾皮&#xff01; 互联网大厂&#xff0c;35岁中年人的困境 在很多行业&#xff0c;35岁正是事业发展黄金期&#xff0c;但在大厂&#xff0c;35岁员工担心竞争力下滑、被年轻人替代、找不到下家...。 “员工35岁被劝退”“高龄员工不续签”&#xf…

独家!起底蚂蚁集团灵活用工服务 源自税筹圈

中国灵活用工市场发展20余年&#xff0c;进入了快速成长阶段。灵活用工成为了时下主流的用工方式&#xff0c;为了达到降本增效的目的&#xff0c;越来越多的企业选择与灵活用工平台合作。 灵活用工产业角色方包括用工单位、用人单位和外包员工&#xff0c;其中的主角&#xff…

P2E的元宇宙赛车PVE正式开启,Supercars的全新赋能征程

前言&#xff1a; Luna近期崩盘的热度火遍全球&#xff0c;公链的安全事故导致ETH链上大量的资金开始出逃。一鲸落&#xff0c;万物生&#xff0c;市场热度开始由DeFi赛道又开始回归到了链游方向。以StepN为主的P2E&#xff0c;M2E在数据层面又开始逐渐变好&#xff0c;市场最…

计算广告(一)

计算广告学是一个十分庞大的学科&#xff0c;里面涵盖了自然语言处理、机器学习、推荐系统等众多研究方向。而且广告作为互联网行业的三大盈利模式&#xff08;广告、电商、游戏&#xff09;之一&#xff0c; 也是这三大模式中最有技术含量的&#xff0c;计算广告学一直都吸引…

献给青春的歌 · 致「 腾讯QQ 18 岁」

博主说&#xff1a;在中国为期不长的互联网历史上&#xff0c;太多的 IT 产品如昙花般匆匆一现&#xff0c;腾讯能够走过 18 载春秋&#xff0c;出人意料又在情理之中。但对于我们来说&#xff0c;腾讯QQ 绝并不仅仅只是一个用于聊天的软件而已&#xff0c;因为它更承载着我们青…

触宝占据内容赛道有利位置:疯读高速发展,或将迎来价值修复时刻

撰稿 | 多客 来源 | 贝多财经 近年来&#xff0c;移动互联网的快速发展&#xff0c;使得战略转型成为一个持续性的话题。 如百度从搜索到AI的转变&#xff0c;如平安集团从金融到科技的调整&#xff0c;众多互联网大厂也纷纷瞄准内容赛道&#xff0c;譬如字节跳动、趣头条、阅…

OEM“竞跑”:智能电动+本地化

高市值&#xff0c;是支撑汽车制造商继续智能电动汽车赛道征战的门票。 近日&#xff0c;戴姆勒首席执行官Ola Kallenius正在为这家传统豪华汽车制造商寻求更高的估值。去年12月戴姆勒的卡车部门被分拆后&#xff0c;这家汽车制造商将在今年2月1日正式更名为梅赛德斯奔驰&…

竞跑加速! 数字人民币场景全覆盖

进入8月仅数日&#xff0c;数字人民币各地试点都传来新进展&#xff0c;继北京轨道交通实现数字人民币全覆盖后&#xff0c;8月8日&#xff0c;北京商报记者梳理发现&#xff0c;包括北京、上海、苏州、广东、大连、青岛、福州、西安等多地试点消息不断&#xff0c;从应用场景来…

讲解冲压模具设计“高凸成型”工艺

讲解冲压模具设计“高凸成型”工艺 模具设计结构需要进行规范化才能规避大部分理论问题&#xff0c;规范的凸包成型结构&#xff0c;能更好的打出合格产品&#xff0c;下面我们就一起来聊聊“高凸成型结构”。 高凸形状 对于这种凸包较高结构的产品一般属于大件&#xff0c;…