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

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

时间:2024-07-05 18:52:18浏览次数:20  
标签: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/18286439

相关文章

  • python多线程与多进程开发实践及填坑记(1)
    1.需求分析1.1.概述基于Flask、Pika、Multiprocessing、Thread搭建一个架构,完成多线程、多进程工作。具体需求如下:并行计算任务:使用multiprocessing模块实现并行计算任务,提高计算效率、计算能力。消息侦听任务:使用threading模块完成RabbitMQ消息队列的侦听任务,将接收到......
  • Python异步编程技术详解:async、await、yield和anext
    Python异步编程技术详解:async、await、yield和anext1.async和await2.yield3.anext4.StopAsyncIteration5.综合示例:异步聊天机器人总结异步编程是Python中一种强大的并发编程模式,可以显著提高I/O密集型应用的性能。本文将详细介绍Python中的几种重要的异步编......
  • Python金融时间序列模型ARIMA 和GARCH 在股票市场预测应用|附代码数据
    原文链接:http://tecdat.cn/?p=24407最近我们被客户要求撰写关于金融时间序列模型的研究报告,包括一些图形和统计输出。这篇文章讨论了自回归综合移动平均模型(ARIMA)和自回归条件异方差模型(GARCH)及其在股票市场预测中的应用 ( 点击文末“阅读原文”获取完整代码数据******......
  • 还在为如何学Python而犯难吗?在这里分享下最全的Python学习路线!
    先是Python基础知识的看完基础的,那就来进阶的,前面的是入门,现在的也就是作为一个程序员的基础最后在来个爬虫的觉得有用的朋友,记得点赞哟,如果觉得还看得不过瘾,可以私信我,我这里有Python爬虫系统教学的免费直播观看名额或者还想看其他知识点的,可以在下面留言。......
  • Python学习篇:流程控制详细介绍(四)
    目录1前言2条件判断2.1基本语法2.2使用示例2.3注意事项3循环3.1for循环3.2while循环3.3循环控制语句 4异常处理 4.1基本语法4.2使用示例 4.3注意事项 1前言Python中的流程控制是编程中非常重要的一部分,它允许你根据条件、循环或其他因素来......
  • 超详细Python教程——函数和模块的使用
    函数和模块的使用在讲解本章节的内容之前,我们先来研究一道数学题,请说出下面的方程有多少组正整数解。事实上,上面的问题等同于将8个苹果分成四组每组至少一个苹果有多少种方案。想到这一点问题的答案就呼之欲出了。可以用Python的程序来计算出这个值,代码如下所示。"""......
  • 一个用来画拉氏图的简单Python脚本
    技术背景关于拉氏图的更多介绍,可以参考下这篇博客,这里简单引述一部分内容:Ramachandranplot(拉氏图)是由G.N.Ramachandran等人于1963年开发的,用来描述蛋白质结构中氨基酸残基二面角\(\psi\)和\(\phi\)是否在合理区域的一种可视化方法。同时也可以反映出该蛋白质的构象是否合理......
  • Python多线程-线程池ThreadPoolExecutor
    1.线程池不是线程数量越多,程序的执行效率就越快。线程也是一个对象,是需要占用资源的,线程数量过多的话肯定会消耗过多的资源,同时线程间的上下文切换也是一笔不小的开销,所以有时候开辟过多的线程不但不会提高程序的执行效率,反而会适得其反使程序变慢,得不偿失。为了防止无尽的线程......
  • Python的垃圾回收机制
    Python的垃圾回收机制引入计数器为主,标记清除和分代回收为辅1.引入计数器环状双向链表refchain在python程序中创建的任何对象都会放在refchain链表中当python程序运行时,会根据数据类型的不同找到其对应的结构体,根据结构体中的字段来进行创建相关的数据,然后将对象添加到rec......
  • python中logging
    Python的logging模块是一个用于记录应用程序日志消息的标准模块。它非常强大且灵活,允许你记录各种级别的日志消息,并配置输出格式、日志的存储位置以及处理日志的不同方式。以下是logging模块的基本介绍和用法。defcreate_logger(log_file):log_format='%(asctime)s......