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

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

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

然而,当我们跨越国界,来到高度发达的英国,却发现类似的问题依旧存在。一项发表在《城市经济学》上的研究,通过对英国7500名居民长达近二十年的追踪调查,揭示了原生城市规模对个人成年后收入的深远影响。研究发现,与曼彻斯特和利物浦相比,伦敦出生的居民平均收入更高,这一发现无疑加剧了小城市居民的心理压力。
然而,研究并未止步于揭示这些机制。为了进一步量化各变量对收入的影响,研究者们应用了复杂的计量方法,对变量进行了细致的解构。他们发现,“学习”(即工作后获得的知识和经验积累)在原生城市规模对收入的影响中占据了高达65.2%的比重,而教育和当前工作城市规模则分别占据了10.9%和8.6%的比重。
这一发现为我们提供了宝贵的启示:尽管出身无法选择,但个人仍然可以通过持续学习和努力来提升自己的收入水平。在数据时代,我们更应该重视数据的作用,通过构建精确高效的模型来预测和解释个人收入的差异。
为此,我们通过分析多种影响收入的数据,构建影响个人收入的模型,并据此为相关部门提供建议。我们采用了多种建模方式,包括简单线性回归、决策树、梯度提升、岭回归等,并通过测试数据回测选出了表现最好的模型。
最终,我们发现教育、工作经验、婚姻状况、是否在城市生活以及智商和母亲教育程度的交互作用等因素对个人收入具有显著影响。这一发现不仅为我们理解个人收入的差异提供了新的视角,更为我们制定相关政策提供了有力的支持。

任务/目标

通过分析多种影响收入的数据,构建影响个人收入的模型,实现对个人收入预测,并根据模型结果为教育部等相关部门提出建议。

数据源准备

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

数据清洗

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

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

构造

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

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

划分训练集和测试集

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

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

探索性分析

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

建模

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

模型选取

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

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

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

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

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

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

model_1.summary().tables[1]

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

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

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

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

kappa = t_tilde.cov(y) / t_tilde.var()
kappa

 

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

model_2.summary().tables[1]

遗漏变量或混杂偏差

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

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

因果图分析

  1. 以教育对工资的影响为例,因果图显示教育导致工资,同时智商也导致工资和教育。如果不考虑智商变量,其对工资的影响会通过与教育的相关性使教育对工资的影响看起来比实际更高,这是正偏差的例子。
  2. 以警察对城市暴力的影响为例,城市警力增加与暴力增加相关,但可能存在混杂变量犯罪,犯罪导致更多暴力和更多警力。如果不考虑犯罪变量,犯罪对暴力的影响会通过警力使警力看起来增加了暴力,这是负偏差的例子。

回归与随机对照试验解决偏差的方法
回归分析通过将混杂变量固定在一定水平来比较处理变量的影响,而随机对照试验通过切断混杂变量与处理变量的联系来解决偏差问题。

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”(梯度提升回归器)具有最佳性能。

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

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

model = 'GradientBoostingRegressor'
y_pred = best_models[model].predict(X_test)
# y_pred = pipeline.predict(X_test)
 

总结

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

关于分析师

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

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

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

相关文章

企业级WEB应用服务器——TOMCAT

一、WEB技术 1.1、HTTP协议和B/S 结构 最早出现了CGI(Common Gateway Interface)通用网关接口,通过浏览器中输入URL直接映射到一个 服务器端的脚本程序执行,这个脚本可以查询数据库并返回结果给浏览器端。这种将用户请求使用程…

AWS不同类型的EC2实例分别适合哪些场景?

Amazon Web Services(AWS)的弹性计算云(EC2)提供了多种实例类型,以满足不同的应用需求和工作负载。了解不同类型的 EC2 实例及其适用场景,可以帮助用户更好地优化性能和控制成本。九河云和大家一起了解一下…

安恒信息总裁宋端智,辞职了!活捉一枚新鲜出炉的餐饮人!

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

I/O模型

文章目录 I/O模型相关概念网络I/O模型阻塞型I/O模型非阻塞型I/O模型多路复用I/O型信号驱动式I/O型异步I/O模型 apache和nginx的区别,什么时候选择apache,什么时候选择nginx 文章相关连接如下: 如果想更多了解nginx,请点击&#x…

为什么要使用TikTok云手机

随着TikTok平台的日益繁荣,TikTok云手机作为一种新兴的运营工具,正以其独特的云端技术和用户体验,赢得广大用户的青睐。相较于传统手机,TikTok云手机通过云端技术为用户带来了一系列新的优势,让TikTok运营变得更加灵活…

涂料耐久性氙灯老化试验箱

涂料氙灯老化试验箱是现代检测手段中常用的一种设备,它能够模拟自然光照、光照老化等环境条件,对涂料、染料、塑料、橡胶、纺织品、涂层等材料进行老化试验,以评估其耐久性和使用寿命。本文将详细介绍涂料氙灯老化试验箱的工作原理、使用注意…

正则表达式——详解

正则表达式是什么? 正则表达式(Regular Expression,通常简写为 regex、regexp 或 RE)是一种强大的文本处理工具,用于描述一组字符串的模式。它可以用来匹配、查找、替换等操作,几乎所有现代编程语言都支持…

【流媒体】RTMPDump—RTMP_Connect函数(握手、网络连接)

目录 1. RTMP_Connect函数1.1 网络层连接(RTMP_Connect0)1.2 RTMP连接(RTMP_Connect1)1.2.1 握手(HandShake)1.2.2 RTMP的NetConnection(SendConnectPacket) 2.小结 RTMP协议相关&am…

2024计算机软考报名流程(电脑报名)

1.24年下半年软考报名时间,各省报名时间不一样, 报名时间大概集中在:24年8月19日~24年9月15日; 报名网站:中国计算机技术职业资格网; 广东:2024年8月21日9:00至29日17:00 安徽&#…

Vue3 的 expose 介绍

在 Vue 3 中,expose 是一个用于控制组件内部方法和属性暴露给父组件的新功能。这使得父组件可以调用子组件内部的方法或访问其数据,尤其在使用组合式 API(Composition API)时,这种能力非常有用。 1. 基本用法 expose…

[PHP]-Laravel中Group By引发的问题思考

Laravel 和 ThinkPHP 是两个不同的 PHP 框架,它们在底层使用了相同的 SQL 查询语言来与数据库交互。然而,由于框架的设计和实现方式不同,它们在生成 SQL 查询时可能会表现出一些细微的差异,包括对 GROUP BY 子句的处理。 在调用查…

高性能web服务器1

基础 Web 服务简介 Web 服务是互联网的核心组成部分之一,它允许用户通过浏览器访问信息和应用程序。一个基础的 Web 服务通常由 Web 服务器软件、静态网页内容、以及可选的动态内容生成程序组成。 Web 服务器软件 Web 服务器软件是运行在服务器上的程序&#xff…

STM32(二):GPIO

GPIO(General Purpose Input Output)通用输入输出口 1.可配置为8种输入输出模式,引脚电平:0V~3.3V,部分引脚可容忍5V,输出模式下可控制端口输出高低电平,用以驱动LED、控制蜂鸣器、模拟通信协议输出时序等,输入模式下…

二叉树中的奇偶树问题

目录 一题目: 二思路汇总: 1.二叉树层序遍历: 1.1题目介绍: 1.2 解答代码(c版): 1.3 解答代码(c版): 1.4 小结一下: 2.奇偶树分析&#xf…

glibc 2.24 下 IO_FILE 的利用

文章目录 glibc 2.24 下 IO_FILE 的利用介绍:新的利用技术fileno 与缓冲区的相关利用实例:1. _IO_str_jumps -> overflow实例: 2. _IO_str_jumps -> finish实例: 最后拓展一下上一篇博客house of orange题目的做法: glibc 2.24 下 IO_F…

Oracle基本SQL操作-用户角色权限管理

一、用户权限管理 -- 创建锁定用户,此时用户不可用 create USER zhucl IDENTIFIED BY 123456 account lock; 会提示用户被锁定: -- 删除用户 drop user zhucl;-- 重新创建用户,不锁定 create user zhucl IDENTIFIED BY 123456 account unlo…

嵌入式和单片机有什么区别?

目录 (1)什么是嵌入式? (2)什么是单片机? (3)嵌入式和单片机的共同点 (4)嵌入式和单片机的区别 (1)什么是嵌入式? 关…

45.x86游戏实战-XXX封包组包拼包详解

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 本次游戏没法给 内容参考于:微尘网络安全 工具下载: 链接:https://pan.baidu.com/s/1rEEJnt85npn7N38Ai0_F2Q?pwd6tw3 提…

提车后遇大降价被指“背刺”车主,方程豹的口碑问题何解?

进入8月下旬,汽车市场“金九银十”的销售旺季即将到来,将行业“内卷”推向新高峰。即便有宝马等高端豪华品牌退出“价格战”的先例,但为刺激销量,不少车企依旧推出了各式各样的价格优惠政策,行业内部价格竞争狼烟四起。…

Kotlin 流flow、ShareFlow、StateFlow、Channel的解释与使用

一、介绍 随着Android接入kotlin开发,Android之前好多模式也渐渐被kotlin替代。开发模式也在做渐进的转型,从MVC到MVP在到MVVP以及现在的MVI等。 流IO在java中和kotlin中使用率都是比较高的,场景很多。如Java的IO和NIO,再到我们现…