Python基于决策树分类模型、随机森林分类模型、KNN分类模型和GBDT分类模型完成收入预测项目实战

news2024/11/25 2:26:03

说明:这是一个机器学习实战项目(附带数据+代码+文档+视频讲解),如需数据+代码+文档+视频讲解可以直接到文章最后获取。

1.项目背景

在全球化的今天,收入不平等已经成为各国政府和社会关注的焦点问题之一。了解居民收入状况,特别是区分收入水平是否超过一定阈值(如5万美元),对于政策制定者、社会学家和经济学家而言至关重要。这不仅有助于揭示社会经济结构的现状,而且对于制定针对性的社会保障政策、税收政策以及经济发展战略具有深远影响。

随着大数据和机器学习技术的迅猛发展,我们拥有了前所未有的工具来分析和预测复杂的经济现象。利用居民的年龄,工作类型,受教育程度等多维度数据,构建预测模型,能够帮助我们更准确地预测个体的收入水平。特别是在美国这样的经济体中,能否达到5万美元的年收入往往被视为中产阶级的门槛,对个人的生活质量、消费模式乃至社会流动性有着显著影响。

本项目致力于开发基于机器学习的居民收入预测模型,主要聚焦于预测个体年收入是否超过5万美元。我们的目标是:

通过实施本项目,我们期望能够为理解和解决收入不平等问题提供有力的技术支撑。预测模型的建立不仅可以帮助政府和相关机构提前规划,还能够为个人的职业规划和财务决策提供参考,促进社会的整体福祉。此外,项目成果还将丰富学术界对收入预测领域的研究,为后续的理论创新和应用开发奠定坚实的基础。 

本项目通过决策树分类模型、随机森林分类模型、KNN分类模型和GBDT分类模型完成收入预测。       

2.数据获取

本次建模数据来源于网络(本项目撰写人整理而成),数据项统计如下:

编号 

变量名称

描述

1

age

年龄

2

workclass

工作类型

3

fnlwgt

序号

4

education

受教育程度

5

education-num

受教育时长

6

marital-status

婚姻状态

7

occupation

职业

8

relationship

家庭成员关系

9

race

种族

10

sex

性别

11

capital-gain

资本收益

12

capital-loss

资本损失

13

hours-per-week

每周工作小时数

14

native-country

国籍

15

income

收入

数据详情如下(部分展示):

3.数据预处理

3.1 用Pandas工具查看数据

使用Pandas工具的head()方法查看前五行数据: 

关键代码:

3.2数据缺失查看

使用Pandas工具的info()方法查看数据信息:

从上图可以看到,总共有15个变量,数据中有缺失值,工作类型缺失值1836条、国籍缺失值583条,共有32561条数据。

关键代码: 

3.3数据描述性统计

通过Pandas工具的describe()方法来查看数据的平均值、标准差、最小值、分位数、最大值。

关键代码如下:  

4.探索性数据分析

4.1 income变量柱状图

用Matplotlib工具的plot()方法绘制柱状图:

4.2 特征密度分布图

通过上图可以看出,在不同收入水平下,年龄的核密度分布图,对于年收入超过5万美元的居民来说,他们的年龄几乎呈现正态分布,而收入低于5万美元的居民,年龄呈现右偏特征,即年龄偏大的居民人数要比年龄偏小的人数多。

通过上图可以看出,不同收入水平下,周工作小时数的核密度图,很明显,两者的分布趋势非常相似,并且出现局部峰值。

通过上图可以看出,不同收入水平下,教育时长的核密度图,很明显,两者的分布趋势非常相似,并且也多次出现局部峰值。

4.3 特征柱状

通过上图可以看出,相同的种族下,居民年收入水平高低的人数差异。

通过上图可以看出,相同的家庭成员关系下,居民年收入水平高低的人数差异。但无论怎么比较,都发现一个规律,即在某一个相同的水平下(如白种人或未结婚人群中),年收入低于5万美元的人数都要比年收入高于5万美元的人数多,这个应该是抽样导致的差异(数据集中年收入低于5万和高于5万的居民比例大致在75%:25%)。

通过上图可以看出,相同的性别下,居民收入水平高低人数的差异;其中,女性收入低于5万美元的人数比高于5万美元人数的差异比男性更严重,比例大致为90%:10%, 男性大致为70%:30%。

5.特征工程

5.1离散变量重编码

如下是编码后的结果展示:

5.2 哑特征处理

关键代码如下:

5.3 建立特征数据和标签数据

关键代码如下:

5.4 数据均衡化

采用过采样工具进行数据均衡化,结果如下:

5.5 数据集拆分

通过train_test_split()方法按照80%训练集、20%测试集进行划分,关键代码如下:

6.构建分类模型 

主要使用决策树分类算法、随机森林分类算法、KNN分类算法和GBDT分类算法,用于目标分类。  

6.1 构建模型 

编号

模型名称

参数

1

决策树分类模型

默认参数值

2

random_state=123

3

随机森林分类模型

默认参数值

4

random_state=42

5

KNN分类模型

默认参数值

6

GBDT分类模型

默认参数值

7

random_state=42

7.模型评估

7.1评估指标及结果 

评估指标主要包括准确率、查准率、查全率、F1分值等等。

模型名称

指标名称

指标值

测试集

决策树分类模型

准确率

0.8680

查准率

0.8574

查全率

0.8832

F1分值

0.8701

随机森林分类模型

准确率

0.8925

查准率

0.8855

查全率

 0.9018

F1分值

0.8936

KNN分类模型

准确率

0.8545

查准率

0.7979

查全率

0.9499

F1分值

0.8673

GBDT分类模型

准确率

0.8642

查准率

0.8403

查全率

0.8996

F1分值

0.869

从上表可以看出,4个模型的F1分值都在0.8以上,说明4个模型在月亮数据集上效果良好,其中随机森林表现最好。     

7.2 分类报告  

决策树分类模型:

从上图可以看出,分类为0的F1分值为0.87;分类为1的F1分值为0.87。

随机森林分类模型:

从上图可以看出,分类为0的F1分值为0.89;分类为1的F1分值为0.89。

KNN分类模型:

从上图可以看出,分类为0的F1分值为0.84;分类为1的F1分值为0.87。

GBDT分类模型:

从上图可以看出,分类为0的F1分值为0.86;分类为1的F1分值为0.87。

7.3 混淆矩阵

决策树分类模型:

从上图可以看出,实际为0预测不为0的 有727个样本;实际为1预测不为1的 有578个样本。  

  

随机森林分类模型:

从上图可以看出,实际为0预测不为0的 有577个样本;实际为1预测不为1的 有486个样本。

KNN分类模型:

从上图可以看出,实际为0预测不为0的 有1191个样本;实际为1预测不为1的 有248个样本。

GBDT分类模型:

从上图可以看出,实际为0预测不为0的 有846个样本;实际为1预测不为1的 有497个样本。

7.4 ROC曲线

决策树分类模型:

从上图可以看出,决策树分类模型的AUC值为0.88。

随机森林分类模型:

从上图可以看出,随机森林分类模型的AUC值为0.96。

KNN分类模型:

从上图可以看出,KNN分类模型的AUC值为0.92。

GBDT分类模型:

从上图可以看出,GBDT分类模型的AUC值为0.94。

8.结论与展望

综上所述,本文采用了决策树、、随机森林、KNN和GBDT算法来构建分类模型,最终证明了4种模型效果良好。此模型可用于日常产品的预测。  

# 本次机器学习项目实战所需的资料,项目资源如下:
 
# 项目说明:
 
# 获取方式一:
 
# 项目实战合集导航:
 
https://docs.qq.com/sheet/DTVd0Y2NNQUlWcmd6?tab=BB08J2
 
# 获取方式二:
 
链接:https://pan.baidu.com/s/1t-Y8CL-9kKfsZKYz6xIroQ 
提取码:9rwu

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

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

相关文章

后端之路第三站(Mybatis)——XML文件操作sql

一、XML映射文件是啥 前面我们学过了在Mapper接口用注解的方式来操作sql语句 那么XML映射文件就另一种操作sql语句的方法 为什么还要有这么个玩意? 我简单说就是:如果有的sql特别复杂的话,比如需要【动态sql】的话,就得用到XM…

木各力“GERRI”被“GREE”格力无效宣告成功

近日“GERRI”被“GREE”格力无效宣告成功,“GERRI”和“GREE”近似不,如果很近似当初就不会通过初审和下商标注册证,但是如果涉及知名商标和驰名商标,人家就可以异议和无效。 “GERRI”在被无效宣告时,引用了6个相关的…

电子电路学习笔记(4)三极管

部分内容参考链接: 电子电路学习笔记(5)——三极管_三极管 箭头-CSDN博客 模拟电子技术基础笔记(4)——晶体三极管_集电结的单向导电性-CSDN博客 硬件基本功-36-三极管Ib电流如何控制Ic电流_哔哩哔哩_bilibili 部分…

算法入门(上)

什么是算法? 算法(Algorithm)是解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或多个操作。 给定一个问题,能够解决这个问题的算法是有很多种的。算式中的问题是千奇百怪…

【SCAU操作系统】期末复习简答及计算题例题解析

目录 一、写出下列英文缩写词在计算机系统中的英文或中文全名。 二、进程状态/调度/周转问题 (1)进程状态 (2)进程状态转换 (3)进程调度 (4)最短进程优先调度算法 三、逻辑地…

扫描全能王的AI驱动创新与智能高清滤镜技术解析

目录 引言1、扫描全能王2、智能高清滤镜黑科技2.1、图像视觉矫正2.2、去干扰技术 3、实际应用案例3.1、打印文稿褶皱检测3.2、试卷擦除手写3.3、老旧文件处理3.4、收银小票3.5、从不同角度扫描文档 4、用户体验结论与未来展望 引言 在数字化时代背景下,文档扫描功能…

51单片机第17步_外部中断

本章重点学习外部中断。 1、外部中断0框图: 2、外部中断1框图: 3、Keil C51中有一些关键字,需要牢记: interrupt 0:指定当前函数为外部中断0; interrupt 1:指定当前函数为定时器0中断&#x…

【Spring Boot】认识 JPA 的接口

认识 JPA 的接口 1.JPA 接口 JpaRepository2.分页排序接口 PagingAndSortingRepository3.数据操作接口 CrudRepository4.分页接口 Pageable 和 Page5.排序类 Sort JPA 提供了操作数据库的接口。在开发过程中继承和使用这些接口,可简化现有的持久化开发工作。可以使 …

电路笔记(电源模块): 基于FT2232HL实现的jtag下载器硬件+jtag的通信引脚说明

JTAG接口说明 JTAG 接口根据需求可以选择20针或14针的配置,具体选择取决于应用场景和需要连接的功能。比如之前的可编程逻辑器件XC9572XL使用JTAG引脚(TCK、TDI、TDO、TMS、VREF、GND)用于与器件进行调试和编程通信。更详细的内容可以阅读11…

(超详细)数据结构——“栈”的深度解析

前言: 在前几章我们介绍了线性表的基本概念,也讲解了包括顺序表,单链表,双向链表等线性表,相信大家已经对线性表比较熟悉了,今天我们要实现线性表的另一种结构——栈。 1.栈的概念 栈:一种特殊…

AI是如何与快充技术结合的?

针对AI技术在快充领域的运用,我们可以进一步深入探讨AI如何与快充技术结合,提升充电效率和用户体验。以下是一些具体的AI技术在快充领域的应用场景: 一、智能充电算法 学习充电模式:AI算法可以学习用户的充电习惯,比…

批量文件名修改软件:一键解决同一编码多型号文件分类与命名难题,高效管理文件

在数字化时代,图片文件已经成为我们工作中不可或缺的一部分。然而,当面对成百上千个同一编码下不同型号的图片文件时,如何快速、准确地进行分类和命名,成为了许多职场人士头疼的问题。现在,我们为您带来了一款神奇的批…

智能环境监测与数据分析系统

项目名称:智能环境监测与数据分析系统 一、引言 随着科技的发展和人们环保意识的增强,对环境监测的需求日益增加。传统的环境监测手段往往存在数据收集不及时、数据分析不准确等问题。因此,设计一个智能环境监测与数据分析系统具有重要的现…

如何在 SQL 中删除一条记录?

如何在 SQL 中删除一条记录? 在 SQL 中,您可以使用DELETE查询和WHERE子句删除表中的一条记录。在本文中,我将向您介绍如何使用DELETE查询和WHERE子句删除记录。我还将向您展示如何一次从表中删除多条记录 如何在 SQL 中使用 DELETE 这是使…

GMSB文章八:微生物中介分析

欢迎大家关注全网生信学习者系列: WX公zhong号:生信学习者Xiao hong书:生信学习者知hu:生信学习者CDSN:生信学习者2 介绍 中介分析(Mediation Analysis)是一种统计方法,用于研究一…

Linux基础篇——目录结构

基本介绍 Linux的文件系统是采用级层式的树状目录结构,在此结构中的最上层是根目录"/",然后在根目录下再创建其他的目录 在Linux中,有一句经典的话:在Linux世界里,一切皆文件 Linux中根目录下的目录 具体的…

新能源行业知识体系-------主目录-----持续更新

本文相当于目录方便快速检索内容,没有实际内容,只做索引 文章目录 一、电力市场概论二、蒙西电网需求侧响应三、蒙西电网市场结算V2.0 一、电力市场概论 是学习清华大学电力市场概论(2024年春)的学习笔记,详细了解电力市场是如何利用经济学知…

远程桌面无法复制粘贴文件到本地怎么办?

远程桌面不能复制粘贴问题 Windows远程桌面为我们提供了随时随地访问文件和数据的便捷途径,大大提升了工作和生活的效率。然而,在使用过程中,我们也可能遇到一些问题。例如,在通过远程桌面传输文件时,常常会出现无法复…

Day7:.翻转字符串里的单词 151 卡码网:55.右旋转字符串

题目 151. 反转字符串中的单词 - 力扣&#xff08;LeetCode&#xff09; class Solution { public:// 移除多余空格void moveSpace(string& s) {// 定义快慢指针int slow 0;int fast 0;// 删除前导空格while (s.size() > 0 && fast < s.size() &&…

第2章-Python编程基础

#本章目标 1&#xff0c;了解什么是计算机程序 2&#xff0c;了解什么是编程语言 3&#xff0c;了解编程语言的分类 4&#xff0c;了解静态语言与脚本语言的区别 5&#xff0c;掌握IPO程序编写方法 6&#xff0c;熟练应用输出函数print与输入函数input 7&#xff0c;掌握Python…