首页 > 编程语言 >数据分享|python分类预测职员离职:逻辑回归、梯度提升、随机森林、XGB、CatBoost、LGBM交叉验证可视化

数据分享|python分类预测职员离职:逻辑回归、梯度提升、随机森林、XGB、CatBoost、LGBM交叉验证可视化

时间:2023-12-03 21:22:16浏览次数:50  
标签:python 梯度 模型 random XGB CatBoost state 随机

全文链接:https://tecdat.cn/?p=34434

原文出处:拓端数据部落公众号

分析师:Shilin Chen

离职率是企业保留人才能力的体现。分析预测职员是否有离职趋向有利于企业的人才管理,提升组织职员的心理健康,从而更有利于企业未来的发展。

解决方案

任务/目标

采用分类这一方法构建6种模型对职员离职预测,分别是逻辑回归、梯度提升、随机森林、XGB、CatBoost、LGBM。确定某一职员属于是或否离职的目标类,并以此来探究职员大量离职的潜在因素。

数据源准备

员工离职数据,属性包括职员的年龄,出差频率、部门、受教育水平、工作参与度和工作等级等等。

特征转换

是否离职、性别等字符串型数据分别用0或1代替,出差频率等按等级用0-2的数字代替。

构造

以上说明了如何抽取相关特征,我们大致有如下训练样本(只列举部分特征)。

image.png

了解数据集的分布

划分训练集和测试集

以样本中测试集占比百分之二十的比例训练模型

image.png

   
summary(dftrain)

image.png

__results___22_0.png

image.png

建模

使用Stratified K-Fold交叉验证来进行模型评估

   
def cross_valtion(model, X, y):
    skf = StratiFold(n_splits = 10, random_state = 42, shuffle = True)
    scores = []
    predictions = np.ros(len(X))
    
    for fold, (train_index, test_index) in enum

这是一个逻辑回归分类器的实例化,其中random_state参数用于指定随机的种子数,以便结果的可重复性。逻辑回归是一种线性模型,用于解决二元分类问题。

   
LogisticRegression(random_state = 42))

梯度提升分类器的实例化,其中random_state参数同样用于指定随机种子数。梯度提升是一种集成学习算法,它将多个弱学习器结合成一个强学习器。

   
GradientBoostingClassifier(random_st

随机森林分类器的实例化,其中random_state参数用于指定随机种子数。随机森林是一种基于决策树的集成学习算法。

   
RandomForestClassifier(random_state =

使用XGBoost库的分类器的实例化,其中random_state参数用于指定随机种子数。XGBoost是一个高效的梯度提升库。

   
XGBClassifier(random_stat

CatBoost分类器的实例化,其中random_state参数用于指定随机种子数。CatBoost是一个使用梯度提升的库,可以处理分类和回归问题。

   
CatBoostClassifier(random_

使用LightGBM库的分类器的实例化,其中random_state参数用于指定随机种子数。LightGBM是另一个梯度提升库,通常被认为在大型数据集上具有较高的性能。

   
LGBMClassifier(random_sta

比较结果

逻辑回归

image.png

梯度提升分类器

image.png

随机森林

image.png

XGBClassifier

image.png

CatBoostClassifier

image.png

LGBMClassifier

image.png

在此案例中,CatBoost模型的分类预测能力是最理想的,能够很大程度找准真正离职的职员。

预测

   
model.pre_proba(tempdrop(columns = ['id']))[:, 1]

frame = dftest[['id']].copy()

总结

对职员离职预测进行了深入的研究,采用了多种机器学习算法进行分类预测,包括逻辑回归、梯度提升、随机森林、XGBoost、CatBoost和LightGBM,并进行了交叉验证和可视化。

通过数据预处理和特征工程,该论文构建了多个预测模型,包括逻辑回归、梯度提升、随机森林、XGBoost、CatBoost和LightGBM。这些模型在数据集上进行了训练和评估,并采用了交叉验证技术来评估模型的性能和稳定性。

其中,逻辑回归模型采用了L2正则化来防止过拟合,并使用了网格搜索技术来优化超参数。梯度提升模型采用了决策树作为基本单元,并使用了自适应权重的策略来优化提升过程。随机森林模型采用了多个决策树的集成方法,并使用了特征重要性来评估特征的重要性。XGBoost模型采用了梯度提升算法,并使用了正则化项来优化模型的复杂度。CatBoost模型采用了梯度提升算法,并使用了类别特征的独热编码来处理分类特征。LightGBM模型采用了决策树算法,并使用了高效的数据结构和算法来优化训练过程。

最终,得出了结论:在预测职员离职的分类问题上,不同的机器学习算法具有不同的性能表现和优劣。通过交叉验证和可视化技术,我们可以评估模型的性能和稳定性,并为实际应用提供可靠的预测结果。

关于分析师

image.png

在此对Shilin Chen对本文所作的贡献表示诚挚感谢,她专注可视化分析、统计分析领域。擅长Python、SQL。

hero-math-of-acos-1136585848.jpg

标签:python,梯度,模型,random,XGB,CatBoost,state,随机
From: https://www.cnblogs.com/tecdat/p/17873804.html

相关文章

  • python 解压可迭代对象赋值给多个变量
    1.2解压可迭代对象赋值给多个变量问题如果一个可迭代对象的元素个数超过变量个数时,会抛出一个ValueError。那么怎样才能从这个可迭代对象中解压出N个元素出来?解决方案Python的星号表达式可以用来解决这个问题。比如,你在学习一门课程,在学期末的时候,你想统计下家庭作业......
  • pythont基础-条件流程语句
    1、条件流程语句1、if语句if表达式1:语句if表达式2:语句elif表达式3:语句else:语句elif表达式4:2、for循环语句#以下for实例中使用了break语句,break语句用于跳出当前循环体:sites=["Baidu","Google","Runoob","Taobao"]forsitein......
  • Python基础_01_MarkDown语法基础
    MarkDown基础语法[一]Typora(1)下载官网:Typora官方中文站(typoraio.cn)正版价格及介绍:89元/3台设备;89元三个设备码(重装系统设备码失效)绿色版:网盘链接[.\Typora\resources文件夹下替换(app.asar)](2)部分设置主题更改:Typora官方主题库下载完成后,解压压缩包后将.css......
  • python基础-encode()、decode()函数
    1、encode()函数用于将字符串转换为指定编码格式的字节序列语法:其中,encoding是指定的编码格式,例如UTF-8、GBK等;errors是可选参数,用于指定编码错误的处理方式。string.encode(encoding,errors)示例s="周杰伦"bs1=s.encode("gbk")#bytes类型bs2=s.encode("utf......
  • python基础-字典
    1、字典定义字典是一种可变的容器,可以存储任意类型的数据字典中的每个数据都是用"键"(key)进行索引,而不像序列可以用下标进行索引【集合可以用下标进行搜索】字典中的数据没有先后关系,字典的存储是无序的【集合set存储也是无序的】字典的表示方式是以{}括起来,以冒号(......
  • python报错:Pip 20.3+ break proxy connection
    参考:https://www.cnblogs.com/devilmaycry812839668/p/17872452.html   ==================================== 在proxy方式下使用pip有时候会报错。原因是某些版本pip依赖的urllib3库默认使用https方式进行网络连接,但是在proxy模式下由于大部分的proxy工具都是不支持h......
  • python基础-集合
    1、集合的创建用{}进行创建用内置函数set()进行创建示例代码#第一种创建方式s={1,2,3,3,4,5,6,7}print(s,type(s))#第二种创建方式s1=set(range(6))#根据范围进行集合的创建print(s1)s2=set([1,23,34,12,23])#将列表转换为为集合print(s......
  • python基础-元组
    1、元组的声明#Python的元组与列表类似,不同之处在于元组的元素不能修改。#元组使用小括号(),列表使用方括号[]。#元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可。/1、代码实例tup1=('Google','Runoob',1997,2000)tup2=(1,2,3,4,5)tup3="a",......
  • python中级之数据类型内置方法
    引子 数据类型是用来记录事物状态的,而事物的状态是不断变化的(如:一个人年龄的增长(操作int类型),单个人名的修改(操作str类型),学生列表中增加学生(操作list类型)等),这意味着我们在开发程序时需要频繁对数据进行操作,为了提升我们的开发效率,python针对这些常用的操作,为每一种数据类型内......
  • 基于python的Linux服务器资源监控
    介绍项目地址:https://github.com/leeyoshinari/performance_monitor已完成如下功能1、监控整个服务器的CPU使用率、iowait、内存使用、磁盘IO、网络带宽和TCP连接数2、监控指定端口的CPU使用率、上下文切换、内存占用大小、磁盘读写和TCP连接数3、针对java应用,可以监控jvm......