Python个人收入影响因素模型构建:回归、决策树、梯度提升、岭回归|数据分享...

news2024/11/13 15:32:58

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

分析师:Greata Xie

“你的命运早在出生那一刻起便被决定了。”这样无力的话语,无数次在年轻人的脑海中回响,尤其是在那些因地域差异而面临教育资源匮乏的年轻人中更为普遍。在中国,这种现象尤为明显:没有生在大城市的他们,从小便需面对教育资源的不平等,有人甚至在初中阶段便被迫放弃学业,转而在流水线旁成为普工;而即便有幸成为家乡的佼佼者,他们长大后也可能因户口问题而选择低薪工作,或是将收入的一半付给房东点击文末“阅读原文”获取完整代码数据)。

然而,当我们跨越国界,来到高度发达的英国,却发现类似的问题依旧存在。一项发表在《城市经济学》上的研究,通过对英国7500名居民长达近二十年的追踪调查,揭示了原生城市规模对个人成年后收入的深远影响。研究发现,与曼彻斯特和利物浦相比,伦敦出生的居民平均收入更高,这一发现无疑加剧了小城市居民的心理压力。

但幸运的是,研究并未止步于此。为了进一步量化各变量对收入的影响,研究者们应用了复杂的计量方法。他们发现,“学习”(即工作后获得的知识和经验积累)在原生城市规模对收入的影响中占据了高达65.2%的比重,而教育和当前工作城市规模则分别占据了10.9%和8.6%的比重。

在数据时代,我们更应该重视数据的作用,通过构建精确高效的模型来预测和解释个人收入的差异。

为此,我们通过分析多种影响收入的数据,构建影响个人收入的模型,采用了多种建模方式,包括线性回归、决策树、梯度提升、岭回归等,并通过测试数据回测选出了表现最好的模型。

任务/目标

通过分析多种影响收入的数据查看文末了解数据免费获取方式,构建影响个人收入的模型,实现对个人收入预测,并根据模型结果为教育部等相关部门提出建议。

数据源准备

有相关数据的详细披露,需要将目标数据爬取或直接下载。

数据清洗

但经过python相关函数的检测,我们发现很多空数据,由于模型和数据涉及的影响变量较多,所以出现空数据的个体无法参与到所有因素的建模中。

但若去掉携带空数据的个体后数据分布发生变化,则使用去掉空数据后建立的模型就无法准确预测整体样本,面对这个问题,我们对比了完整样本和去掉空数据后样本的柱状图,证明了去掉空数据并不会影响样本的整体分布。345edb812aa1d54aeaffafbb3541b77f.png

构造

样本中一共收集了935个人的16项不同的相关数据。

去掉空数据后新样本一共收集了663个人的16项不同的相关数据。

10c50a51990010ee0c3ed05cf0ef1199.png

划分训练集和测试集

由于相关部门的数据披露并没有时间顺序,所以为了建立真实和无偏差的测试模型,我们以8:2的分数形式对数据样本切分训练集和测试集。具体做法如下:

我们一共有663份相关数据,随机抓取530份数据作为training data(即训练数据),剩下的133份数据作为testing data(即测试数据)。

探索性分析

利用成对分析和热力图,对大量的变量和数据之间的关系进行观察和预测。9c96a92cf2d9e98c0f1e57e9bd913aa4.png

cebd52474087f1db91c8f99b5ec8249c.png


点击标题查阅往期内容

f4ab3355f39c18ec81b930ab14156856.jpeg

R语言用贝叶斯线性回归、贝叶斯模型平均 (BMA)来预测工人工资

outside_default.png

左右滑动查看更多

outside_default.png

01

e5945ffbdb5dcd8eb922a3fa41f8a8f0.png

02

cc5d4bf46d850a4d68973e51abfb615d.png

03

96522601ee54c6e41da6706997bdc4b1.png

04

1100c29186285a7ab9efce43921ba709.png

建模

由于变量数过大,我们对训练数据采用了简单线性回归、多重线性回归、线性样条、带多个节点的线性样条、多项式回归、变量间相互作用、对数转换、指数转换等多个建模方式,并定义前向选择和逆向选择的函数,协助进行高效建模,最终从20多个模型中选取表现最好的前八个模型。

c888f73642f04992d287419568b2319d.png

模型选取

通过使用测试数据进行回测,选择在测试数据中表现最好的模型

在此项目中,经过测试数据的回测,选出的8个模型中,标记为log-interaction11的模型表现最好,表现最好的前三个模型拟合情况对比图如下:

42dd8026e38ade405f6d09262382d5ef.png

435c09c18e041bb1243b7ca70b3faf7f.png

log-interaction11采用正常最小二乘方回归的方程结果如下:

2112d2f8895df7fef47a2dea46516781.png

教育、工作经验、是否结婚和是否在城市生活的交互作用、年纪和知识面的交互作用、智商和母亲教育程度的交互作用、教育和是否为黑种人的交互作用组成了最终预测工作水平准确度最高的模型。

Python对工资影响的回归分析及偏差探讨|附代码数据

接下来,我们将尝试估算多接受一年教育对小时工资的影响。进行教育实验是非常困难的。你不能简单地将人们随机分配到 4 年、8 年或 12 年的教育。

model_1.summary().tables\[1\]

c49f924ae3370d451b3062c062c53f5c.png

对工资与教育年限进行简单回归,估计出回归系数 β1 为 0.0536,95% 置信区间为 (0.039, 0.068)。这意味着该模型预测每增加一年教育,工资将增长约 5.3%。

e2ce94e201b530abd3ef2de6b74172af.png 

仅考虑教育变量的简单模型可能存在偏差。首先,数据并非来自随机实验,接受更多教育的人与接受较少教育的人可能不可比。其次,从对世界的理解来看,受教育年限更多的人可能有更富裕的父母,工资随教育增加可能只是家庭财富与教育年限相关的反映。此外,教育也可能因让人远离劳动力市场而降低工资。

引入其他变量的多元回归分析

(一)变量选择
在数据中,我们可以获得其他变量,如父母教育程度(meduc、feduc)、个人智商(IQ)、工作经验(exper)、任期(tenure)以及婚姻和种族的虚拟变量等。

4a06da1a62f252400ec745ba2a8ba750.png

kappa = t\_tilde.cov(y) / t\_tilde.var()kappa

84d695b123e9d94c61435aeb8d562547.png

通过引入这些变量进行多元回归分析,估计出在控制其他因素后,每增加一年教育与小时工资增长 4.11% 相关。这证实了简单模型存在偏差且高估了教育的影响。

model_2.summary().tables\[1\]

0b97fd77e0b97262ef414463195c604b.png

遗漏变量或混杂偏差

偏差来源
以教育对工资的影响为例,未控制智商等变量时,教育对工资的影响也包含了其他未纳入模型变量的影响,这是遗漏变量偏差的来源,即混杂变量影响了处理变量和结果变量。

g.edge("Police", "Violence", color="blue")g

820dcd35454cec66d6aa4a3e617b8f65.png 

因果图分析

  1. 以教育对工资的影响为例,因果图显示教育导致工资,同时智商也导致工资和教育。如果不考虑智商变量,其对工资的影响会通过与教育的相关性使教育对工资的影响看起来比实际更高,这是正偏差的例子。

  2. 以警察对城市暴力的影响为例,城市警力增加与暴力增加相关,但可能存在混杂变量犯罪,犯罪导致更多暴力和更多警力。如果不考虑犯罪变量,犯罪对暴力的影响会通过警力使警力看起来增加了暴力,这是负偏差的例子。

713a29adf1e1a7beec1917b09b942e2f.png

Python机器学习:回归、决策树、梯度提升、岭回归薪资预测分析|附代码数据

接下来本文对 数据集进行了全面分析,旨在基于年龄、工作年限、性别和职位等多个特征来预测薪资。通过广泛的数据处理、可视化以及机器学习方法,我们获得了有价值的见解并构建了具有高准确性的预测模型。

数据处理流程定义

(一)使用 ColumnTransformer 进行数据预处理
确定分类特征和数值特征,分类特征包括 “Gender”(性别)、“Education Level”(教育水平)、“Job Title”(职位),数值特征包括 “Age”(年龄)、“Years of Experience”(工作年限)。

import numpy as npcat\_features = \['Gender', 'Education Level', 'Job Title'\]num\_features = \['Age', 'Years of Experience'\]

定义超参数分布字典

为不同的回归模型定义超参数分布字典,例如 “LinearRegression”(线性回归)和 “DecisionTreeRegressor”(决策树回归器),设置不同的超参数取值范围,如线性回归的截距设置以及决策树回归器的最大深度、最小分割样本数和最小叶子样本数等。

param\_distributions = {'LinearRegression': {'regressor\_\_fit\_intercept': \[True, False\],},'DecisionTreeRegressor': {'regressor\_\_max\_depth': \[None\] + list(np.arange(1, 21)),'regressor\_\_min\_samples\_split': np.arange(2, 21),'regressor\_\_min\_samples_leaf': np.arange(1, 21)},

使用 RandomizeSearchCV 进行超参数优化

将数据集划分为训练集和测试集,对于不同的模型进行超参数优化,记录每个模型的最佳模型、最佳参数和最佳得分。

best\_models = dict()best\_params = dict()best\_score = dict()X\_train, X\_test, y\_train, y\_test = train\_test\_split(X.values, y.values, train\_size=.8)for model in param_distributions.keys():

模型性能评估与可视化

(一)绘制模型性能图
通过比较不同模型的性能,可以看出 “GradientBoostingRegressor”(梯度提升回归器)具有最佳性能。

f297cb50c3d37a8f7f2d93ef4742c16a.png

(二)绘制预测结果与真实目标变量的散点图

以 “GradientBoostingRegressor” 模型为例,使用最佳模型对测试集进行预测,然后绘制预测结果与真实目标变量的散点图,以直观地展示模型的预测效果。

model = 'GradientBoostingRegressor'y\_pred = best\_models\[model\].predict(X\_test)# y\_pred = pipeline.predict(X_test)

21bb1048fe331984fb29f70ffc1358ff.png 

cbec45467ca41147963d4c1c1166e59b.png

总结

尽管命运或许在某种程度上被决定了,但我们仍然可以通过自己的努力和持续学习来改变自己的命运。在大数据的助力下,我们有望更加精准地预测和解释个人收入的差异,为每个人创造更加公平和美好的未来。

关于分析师

cd5d539d9659db2cfaa07ae049a3043f.png

在此对 Greata Xie 对本文所作的贡献表示诚挚感谢,她在悉尼大学完成了金融、商业分析专业的硕士学位,专注数据采集、清洗、可视化和分析等领域。擅长 Python、SQL。

数据获取

在公众号后台回复“收入”,可免费获取完整数据。

d838f5e5cd5832713616ce6ecb162af7.jpeg

本文中分析的数据、代码分享到会员群,扫描下面二维码即可加群!

1bd254bb241a78b7dd39d3c16eafde09.png


资料获取

在公众号后台回复“领资料”,可免费获取数据分析、机器学习、深度学习等学习资料。

fd9656c9ed78ccac1ca57f753287a2df.png

点击文末“阅读原文”

获取全文完整代码数据资料。

本文选自《Python个人收入影响因素模型构建:回归、决策树、梯度提升、岭回归》。

点击标题查阅往期内容

R语言逻辑回归、Naive Bayes贝叶斯、决策树、随机森林算法预测心脏病

PYTHON银行机器学习:回归、随机森林、KNN近邻、决策树、高斯朴素贝叶斯、支持向量机SVM分析营销活动数据|数据分享

PYTHON用户流失数据挖掘:建立逻辑回归、XGBOOST、随机森林、决策树、支持向量机、朴素贝叶斯和KMEANS聚类用户画像

MATLAB随机森林优化贝叶斯预测分析汽车燃油经济性

R语言中贝叶斯网络(BN)、动态贝叶斯网络、线性模型分析错颌畸形数据

使用贝叶斯层次模型进行空间数据分析

MCMC的rstan贝叶斯回归模型和标准线性回归模型比较

python贝叶斯随机过程:马尔可夫链Markov-Chain,MC和Metropolis-Hastings,MH采样算法可视化

Python贝叶斯推断Metropolis-Hastings(M-H)MCMC采样算法的实现

matlab贝叶斯隐马尔可夫hmm模型实现

贝叶斯线性回归和多元线性回归构建工资预测模型

Metropolis Hastings采样和贝叶斯泊松回归Poisson模型

贝叶斯分位数回归、lasso和自适应lasso贝叶斯分位数回归分析免疫球蛋白、前列腺癌数据

R语言RSTAN MCMC:NUTS采样算法用LASSO 构建贝叶斯线性回归模型分析职业声望数据

R语言STAN贝叶斯线性回归模型分析气候变化影响北半球海冰范围和可视化检查模型收敛性

PYTHON用户流失数据挖掘:建立逻辑回归、XGBOOST、随机森林、决策树、支持向量机、朴素贝叶斯和KMEANS聚类用户画像

贝叶斯分位数回归、lasso和自适应lasso贝叶斯分位数回归分析免疫球蛋白、前列腺癌数据

R语言JAGS贝叶斯回归模型分析博士生延期毕业完成论文时间

R语言Metropolis Hastings采样和贝叶斯泊松回归Poisson模型

Python决策树、随机森林、朴素贝叶斯、KNN(K-最近邻居)分类分析银行拉新活动挖掘潜在贷款客户

R语言贝叶斯MCMC:用rstan建立线性回归模型分析汽车数据和可视化诊断

R语言贝叶斯MCMC:GLM逻辑回归、Rstan线性回归、Metropolis Hastings与Gibbs采样算法实例

R语言贝叶斯Poisson泊松-正态分布模型分析职业足球比赛进球数

随机森林优化贝叶斯预测分析汽车燃油经济性

R语言逻辑回归、Naive Bayes贝叶斯、决策树、随机森林算法预测心脏病

R语言用Rcpp加速Metropolis-Hastings抽样估计贝叶斯逻辑回归模型的参数

R语言中的block Gibbs吉布斯采样贝叶斯多元线性回归

Python贝叶斯回归分析住房负担能力数据集

R语言实现贝叶斯分位数回归、lasso和自适应lasso贝叶斯分位数回归分析

Python用PyMC3实现贝叶斯线性回归模型

R语言用WinBUGS 软件对学术能力测验建立层次(分层)贝叶斯模型

R语言Gibbs抽样的贝叶斯简单线性回归仿真分析

R语言和STAN,JAGS:用RSTAN,RJAG建立贝叶斯多元线性回归预测选举数据

R语言基于copula的贝叶斯分层混合模型的诊断准确性研究

R语言贝叶斯线性回归和多元线性回归构建工资预测模型

R语言贝叶斯推断与MCMC:实现Metropolis-Hastings 采样算法示例

R语言stan进行基于贝叶斯推断的回归模型

R语言中RStan贝叶斯层次模型分析示例

R语言使用Metropolis-Hastings采样算法自适应贝叶斯估计与可视化

R语言随机搜索变量选择SSVS估计贝叶斯向量自回归(BVAR)模型

WinBUGS对多元随机波动率模型:贝叶斯估计与模型比较

R语言实现MCMC中的Metropolis–Hastings算法与吉布斯采样

R语言贝叶斯推断与MCMC:实现Metropolis-Hastings 采样算法示例

R语言使用Metropolis-Hastings采样算法自适应贝叶斯估计与可视化

视频:R语言中的Stan概率编程MCMC采样的贝叶斯模型

R语言MCMC:Metropolis-Hastings采样用于回归的贝叶斯估计

c4db9e25cbd876e241202212993cd914.jpeg

8c15d02376dc06121cf7e0dc64822a07.png

536a7f296ba9e29bcb4de1c89e81432d.png

0ca960ff3bfec1b5bc02b32316f5684c.jpeg

6eb5cfddc22824558c5c5151bd46ce2a.png

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

NRC-SIM:基于Node-RED的多级多核缓存模拟器

整理自: 《NRC-SIM: A NODE-RED Based Multi-Level, Many-Core Cache Simulator》,由 Ezequiel Trevio 撰写,作为他在德克萨斯大学里奥格兰德河谷分校攻读电气工程硕士学位的部分成果。以下是论文的详细主要内容: 摘要(Abstract…

全网最适合入门的面向对象编程教程:37 Python常用复合数据类型-列表和列表推导式

全网最适合入门的面向对象编程教程:37 Python 常用复合数据类型-列表和列表推导式 摘要: 在 Python 中,列表是一个非常灵活且常用的复合数据类型。它允许存储多个项,这些项可以是任意的数据类型,包括其他列表。列表推…

大话MoE混合专家模型

MoE(Mixture of Experts),专家混合,就像是人工智能界的超级团队。想象一下,每个专家都有自己的拿手好戏,比如医疗问题找医生,汽车故障找机械师,做饭找大厨。MoE也是这样,…

【前端面试】操作系统

进程与线程 进程线程定义是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位是进程中的一个实体,是CPU调度和分派的基本单位,共享进程的资源资源分配拥有独立的内存空间和系统资源共享进程的内存和资源开销…

【Harmony OS 4.0】像素单位 - px、vp、fp

1. px 物理像素,以像素个数来定义图像尺寸。弊端是,在不同像素密度的屏幕上,相同的像素个数对应的物理尺寸是不同的。就会导致我们的应用在不同设备上显示的尺寸可能不同。如下图: 2. vp(Virtual Pixel) 虚拟像素是一种可根据屏幕…

L-Eval:一个60k左右长文评测数据集

前言 L-Eval是复旦大学邱锡鹏老师团队在 2023 年 7 月左右发布的一个标准化的长文本语言模型(LCLMs)评估数据集,包含20个子任务、411篇长文档、平均长度为7217个单词,超过2000个人工标记的QA对。它分为封闭型任务和开放型任务&am…

Niushop商城第三方插件cps联盟_同城配送_上门预约上手教程配置方法适合单商户和多商户以及V6哈

Niushop商城第三方插件cps联盟_同城配送_上门预约上手教程配置方法 序言:Niushop里面插件比较多可以说有上百种, 不过大多数都是官方自研默认自带50余种剩余的是收费的价格在80-299不等,另外的插件就是和第三方合作,简单的说就是…

25届应届网安面试,默认页面信息泄露

吉祥知识星球http://mp.weixin.qq.com/s?__bizMzkwNjY1Mzc0Nw&mid2247485367&idx1&sn837891059c360ad60db7e9ac980a3321&chksmc0e47eebf793f7fdb8fcd7eed8ce29160cf79ba303b59858ba3a6660c6dac536774afb2a6330#rd 《网安面试指南》http://mp.weixin.qq.com/s?…

linux系统使用yum安装mysql5.6版本的流程

1.下载安装包及依赖包 MySQL :: Download MySQL Community Server (Archived Versions) [rootlocalhost localrepo]# ls MySQL-client-5.6.47-1.el7.x86_64.rpm MySQL-server-5.6.47-1.el7.x86_64.rpm MySQL-test-5.6.47-1.el7.x86_64.rpm MySQL-devel-5.6.47-1.…

如何关闭谷歌浏览器后台运行

当谷歌浏览器不再需要时仍处于后台运行的状态,这不仅消耗宝贵的系统资源,还会影响到多任务的处理效率。本文将为大家详细介绍关闭谷歌浏览器后台还在运行的原因,并提供详细步骤帮助大家禁用后台运行。(本文由https://www.liulanqi…

【FESCO福利专区-注册安全分析报告-无验证方式导致安全隐患】

前言 由于网站注册入口容易被黑客攻击,存在如下安全问题: 1. 暴力破解密码,造成用户信息泄露 2. 短信盗刷的安全问题,影响业务及导致用户投诉 3. 带来经济损失,尤其是后付费客户,风险巨大,造…

无线液位变送器的特点优势

无线液位变送器集成了多种先进功能,广泛应用于消防水车、水厂、污水处理厂、城市供水、高楼水池、水井、水塔、地热井、矿井等领域的液位监测,具有以下几个显著特点: 4G远程通信能力:无线液位变送器通过内置的4G模块,能…

详细分析Ubuntu中的ufw基本知识

目录 前言1. 基本知识2. 基本使用 前言 由于命令行比较简单,此处主要以表格的形式呈现,还有实战中遇到的一个注意点 1. 基本知识 Ubuntu 中一种用户友好的防火墙配置工具,简化 iptables 的使用,适合那些不熟悉复杂防火墙配置的…

JAVA基础面试题总结(十四)——JVM(下)

类文件结构详解 什么是字节码? 在 Java 中,JVM 可以理解的代码就叫做字节码(即扩展名为 .class 的文件),它不面向任何特定的处理器,只面向虚拟机。Java 语言通过字节码的方式,在一定程度上解决…

第二十八节、场景互动的逻辑实现

一、实现接口 mono后面加上接口类,然后实现方法 onenable在场景或物体关闭再打开的激活状态使用 二、绑定按键 三、场景转换 卸载当前场景;加载另一个场景;提供玩家的所处位置 将玩家位置粘贴过来

【Hexo】使用cloudflare pages自动化部署hexo

本文首发于 ❄️慕雪的寒舍 本文将教您使用cloudflare pages来白嫖部署hexo博客。 1.注册cloudflare 这部分就省略了,用邮箱注册就可以了 cloudflare pages的免费版本功能如下: 并发构建数:1(如果有多个pages,同一…

搭建Windows环境下的Redis服务与TinyRDM客户端

Redis是一个开源的高性能键值对数据库,以其内存中数据存储和快速的读写能力而广受开发者欢迎。在Windows环境下搭建Redis服务并使用TinyRDM客户端,可以为开发和日常使用提供极大的便利。 安装Redis服务 1. 下载Redis安装包 首先,下载Redis…

conda install 报错:LibMambaUnsatisfiableError

出现这个错误 LibMambaUnsatisfiableError 通常是因为 Conda 无法在当前配置的通道中找到满足所有依赖项的软件包。 运行下面两个命令解决: conda config --add channels conda-forge conda install -c stanfordnlp stanza1.4.0 有些包可能不在默认的 Conda 通道中…

ECharts tooltip默认html样式,保留样式只对数值格式化

之前遇到过需要对数据进行百分比展示,echarts提供的默认样式还是挺好的所以想保留样式,但是设置了formatter默认样式就没了,所以写了formatter的html字符串模拟还原了一下默认样式,在此记录和分享。 适用场景:对数据进…

MySQL中 EXPLAIN 的使用介绍

Day08-11. MySQL-索引-结构_哔哩哔哩_bilibili 使用 EXPLAIN 在查询语句前加上 EXPLAIN 关键字: EXPLAIN SELECT * FROM orders WHERE customer_id 123 AND order_date > 2023-01-01; 执行上述 EXPLAIN 语句,查看输出结果。MySQL 会返回一个包含查…