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

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

时间:2024-07-15 23:18:42浏览次数:16  
标签: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/18304223

相关文章

  • python中循环结构
    一、循环分类while循环,for-in遍历循环二、while循环1.while语法结构while 条件表达式:    条件执行体(循环体)2.选择结构的if与循环结构中while的区别if判断一次,条件为true执行一次;while判断n+1次,条件为true,执行n次示例:print('使用if')a=1if(a<10):pri......
  • 四、Python集合与函数
    集合set1.不同元素组成2.无序3.集合中元素必须是不可变类型s={1,2,3,4,5}集合常用魔法s={1,2,3,4,5}s.add('s')print(s)#>>>{1,2,3,4,5,'s'}s.add(6)print(s)#>>>{1,2,3,4,5,'s',6}s.clear()print(s)s={1,2,3,4,5}v=s......
  • 为什么PyCharm是首选的Python代码编辑器?
    这两年被Python初学小白问到最多的问题就是,该用什么代码编辑工具?说实话,我个人是用JupyterNotebook最多,主要是经常做数据可视化,方便些。但对于初学者来说,PyCharm仍是不二的选择,甚至我建议你只用PyCharm.从当前所有主流PythonIDE来看,PyCharm是最适合做Python开发的,特别对......
  • python-pycharm终端指令
    进入终端模式:python-V或 python--version  查看正在运行的Python版本 创建虚拟环境:CMD导航到你想创建虚拟环境的位置。然后运行以下命令来创建一个名为env的虚拟环境: python-mvenvenv            ......
  • 0基础学python-12:命名空间和作用域
    目录前言命名空间(Namespace)特点和用途:Python中一般有三种命名空间: 命名空间的查找顺序:作用域(Scope)Python的作用域一共有4种: 作用域查找顺序:代码实例:总结:  前言        命名空间(Namespace)和作用域(Scope)是程序设计中重要的概念,它们有助于组织和管......
  • python集合
    一、集合的定义集合可以存放多个元素。方式一:{a,b,c,d},缺点:不能定义空集合。方式二:set(),空集合;set(Iterable),将可迭代类型元素依次放入集合。遍历:forein{1,3,4,5}:将集合中的每一个元素依次赋予e。特性:不重复,可以用于去重;无序,不可以使用下标。#方式一不能定义空......
  • python推导式
    1.格式第一部分:表达式;第二部分:循环;第三部分:条件(可有可无)。 2.列表推导式 结果是列表;格式:[ ]        Python列表推导式是一种简洁的语法,用于从现有的列表或其他可迭代对象中创建新的列表。它的语法有:[expressionforiteminiterableifcondition]其中,expr......
  • Python小工具—批量移除照片背景
    先上代码。fromrembgimportremoveimportcv2importosdeflist_image_files(directory):#支持的图片文件扩展名列表image_extensions=['.jpg','.jpeg','.png','.gif','.bmp','.tiff']#存储找到的图片文件......
  • python中字典的用法
    1.字典的定义在Python中,字典(Dictionary)是一种可变的容器模型,它可以存储任意类型对象,如整数、浮点数、字符串、列表、元组等。字典的每个元素都是一个键值对(key-valuepair)。键(key)用于唯一标识一个元素,而值(value)则是与该键相关联的数据。字典是无序的,即元素的存储顺序与它们的......
  • asyncio/trio fastdfs python client
    Codets.py#!/usr/bin/envpython"""FastDFS并发测试脚本Usage::$python<me>.py200--show"""importfunctoolsimportitertoolsimportjsonimportosimportpickleimportsysimporttimefrompathlibimportPathfr......