基于机器学习神经网络的个体收入预测分析 (计算机毕设完整代码数据)(博文底部vx获取)

流程图:

1.读数据表

成人收入预测数据集是由Ronny Kohavi和Barry Becker从美国某地区1994年的人口普查局数据库中提取的。该数据集包含32561位成人年收入及14个相关的指标。可以用此数据集来进行收入的预测,预测任务是确定一个人的年收入是否超过5万美元。 首先读取数据集,并查看数据集的前五行。

ageworkclassfnlwgteducationeducation-nummarital-statusoccupationrelationshipracesexcapital-gaincapital-losshours-per-weeknative-countrysalary
39State-gov77516Bachelors13Never-marriedAdm-clericalNot-in-familyWhiteMale2174040United-States<=50K
50Self-emp-not-inc83311Bachelors13Married-civ-spouseExec-managerialHusbandWhiteMale0013United-States<=50K
38Private215646HS-grad9DivorcedHandlers-cleanersNot-in-familyWhiteMale0040United-States<=50K
53Private23472111th7Married-civ-spouseHandlers-cleanersHusbandBlackMale0040United-States<=50K
28Private338409Bachelors13Married-civ-spouseProf-specialtyWifeBlackFemale0040Cuba<=50K

此数据集共有15个变量,其中有9个分类变量依次是工作类型workclass, 受教育程度education, 婚姻状态marital_status,职业occupation,家庭成员关系 relationship, 种族race, 性别sex, 国籍native_country, 收入salary;有6个连续型变量分别是年龄age,序号fnlwgt,受教育时长education_num,资本收益capital_gain,资本损失capital_loss,每周工作小时数hours_per_week

2.缺失值检测

接着我们详细查看变量的基本情况以及数据中是否存在缺失值。

数据缺失值情况:

列名缺失值数量
age0
workclass0
fnlwgt0
education0
education-num0
marital-status0
occupation0
relationship0
race0
sex0

过滤的缺失值行数:0

通过缺失值检测发现不存在缺失值。但通过观察数据集发现,数据中有三组变量存在异常取值,接下来应对异常值进行处理。分别对工作类型workclass、职业occupation、国籍native_country三组分类数据异常值进行替换,即取值为的异常值替换为unknown

3.工作类型异常值替换

对工作类型workclass进行异常值替换。

ageworkclassfnlwgteducationeducation-nummarital-statusoccupationrelationshipracesexcapital-gaincapital-losshours-per-weeknative-countrysalary
39State-gov77516Bachelors13Never-marriedAdm-clericalNot-in-familyWhiteMale2174040United-States<=50K
50Self-emp-not-inc83311Bachelors13Married-civ-spouseExec-managerialHusbandWhiteMale0013United-States<=50K
38Private215646HS-grad9DivorcedHandlers-cleanersNot-in-familyWhiteMale0040United-States<=50K
53Private23472111th7Married-civ-spouseHandlers-cleanersHusbandBlackMale0040United-States<=50K
28Private338409Bachelors13Married-civ-spouseProf-specialtyWifeBlackFemale0040Cuba<=50K

工作类型workclass的异常取值已成功替换。

4.职业异常值替换

对职业occupation进行异常值替换。

ageworkclassfnlwgteducationeducation-nummarital-statusoccupationrelationshipracesexcapital-gaincapital-losshours-per-weeknative-countrysalary
39State-gov77516Bachelors13Never-marriedAdm-clericalNot-in-familyWhiteMale2174040United-States<=50K
50Self-emp-not-inc83311Bachelors13Married-civ-spouseExec-managerialHusbandWhiteMale0013United-States<=50K
38Private215646HS-grad9DivorcedHandlers-cleanersNot-in-familyWhiteMale0040United-States<=50K
53Private23472111th7Married-civ-spouseHandlers-cleanersHusbandBlackMale0040United-States<=50K
28Private338409Bachelors13Married-civ-spouseProf-specialtyWifeBlackFemale0040Cuba<=50K

职业occupation异常取值已成功替换。

5.国籍异常值替换

对国籍native-country异常取值进行替换。

ageworkclassfnlwgteducationeducation-nummarital-statusoccupationrelationshipracesexcapital-gaincapital-losshours-per-weeknative-countrysalary
39State-gov77516Bachelors13Never-marriedAdm-clericalNot-in-familyWhiteMale2174040United-States<=50K
50Self-emp-not-inc83311Bachelors13Married-civ-spouseExec-managerialHusbandWhiteMale0013United-States<=50K
38Private215646HS-grad9DivorcedHandlers-cleanersNot-in-familyWhiteMale0040United-States<=50K
53Private23472111th7Married-civ-spouseHandlers-cleanersHusbandBlackMale0040United-States<=50K
28Private338409Bachelors13Married-civ-spouseProf-specialtyWifeBlackFemale0040Cuba<=50K

国籍native-country异常取值已成功替换。

6.字段基本统计信息

查看数据集中数据的基本统计信息。

ageworkclassfnlwgteducationeducation-nummarital-statusoccupationrelationshipracesexcapital-gaincapital-losshours-per-weeknative-countrysalary
样本数325613256132561325613256132561325613256132561325613256132561325613256132561
不同取值个数916715652422
众数PrivateHS-gradMarried-civ-spouseProf-specialtyHusbandWhiteMaleUnited-States<=50K
众数的频数22696105011497641401319327816217902917024720
均值38.5816467553189778.36651208510.08067934031077.648843708787.30382973540.4374558521
标准差13.6404325536105549.97769702222.57272033217385.2920848403402.96021864912.3474286817
最小值17122851001
下四分位数2811782790040
中位数37178356100040
上四分位数48237051120045
最大值9014847051699999435699

可以看出年龄age、序号fnlwgt、受教育时长education-num、资本收益capital-gain、资本损失capital-loss、每周工作小时数hours-per-week为数值型变量,其余均为分类变量。数值型变量中序号fnlwgt、资本收益capital-gain和资本损失capital-loss,数据分布都较为分散,最大值都是均值的数十倍。

首先,对标签列个体年收入salary进行可视化分析,分别绘制年收入salary分布的饼状图、柱状图直观显示数据的分布情况,便于后续建模。

 绘制年收入salary的柱状图,观察频数分布情况。

由于个体收入与工作类型有直接影响,所以对工作类型workclass进行可视化分析,统计各工作类型的分布并绘制柱状图,对比各工作的收入占比。 

对受教育时间education-num绘制柱状图,观察数据分布情况。

绘制收入salary分布与个体性别sex的柱状图,分析数据间的关系。

 

17.逻辑回归

使用训练集训练逻辑回归模型,得到的各个特征的系数如下表所示:

系数

ageworkclassfnlwgteducationeducation-nummarital-statusoccupationrelationshipracesexcapital-gaincapital-losshours-per-weeknative-country
0.564702-0.1969870.0320080.0500040.854733-0.4313470.012287-0.099280.1024770.4672172.3384410.2657580.423848-0.001297

可以看出,资本收益的系数最高为2.338,其次是受教育时长系数为0.855,年龄系数为0.565,这与日常知识一致,有资本收益,受教育时间长的个体收入水平一般较高。下面进行模型预测。

18.模型预测

利用训练出的逻辑回归模型对测试集进行预测,结果如下:

ageworkclassfnlwgteducationeducation-nummarital-statusoccupationrelationshipracesexcapital-gaincapital-losshours-per-weeknative-countrysalarysalary_predict
-0.8490804496-0.2379060115-0.11993902021.2148687394-0.0313600271-1.7340583484-1.48358179681.58932236170.3936675268-1.4223307593-0.1459204836-0.2166595270.28852961590.251377646800
-0.8490804496-0.23790601150.2529895706-0.3354369281.13473876380.92163394650.5956350429-0.27780503920.3936675268-1.4223307593-0.1459204836-0.216659527-0.0354294470.251377646800
-0.9957056174-0.23790601150.6298973802-0.85220548370.7460391668-0.40621220091.0576832296-0.90018083950.39366752680.703071345-0.1459204836-0.216659527-0.0354294470.251377646800
0.5438586447-0.2379060115-0.3992328043-1.6273583174-2.7522572057-0.40621220091.5197314162-0.9001808395-4.31890906830.703071345-0.14592048364.503481865-0.0354294470.251377646800
0.4705460608-0.2379060115-0.1606502177-2.4025111511-1.1974588179-1.73405834841.5197314162-0.27780503920.39366752680.703071345-0.14592048366.7915840542.88020211890.251377646811

19.分类模型评估

将预测结果和真实值进行比较来对逻辑回归模型进行评估。得到的分类报告和混淆矩阵如下:

分类报告(classification report)

标签精确率(Precision)召回率(Recall)F1值(F1-score)
0.00.910.760.83
1.00.510.770.62
accuracy0.760.760.76
macro avg0.710.770.72
weighted avg0.810.760.78

混淆矩阵(confusion matrix)

由分类报告可以看出:预测为0(salary<=50k)的精确率高达0.91;预测为1(salary>50k)的精确度为0.51,考虑是因为数据中salary>50k的人数过少,不足总数的25%,故导致分类结果不准确。模型结果的AUC值为0.85,此分类模型有较好的预测效果。

总结

本案例中我们首先对数据进行缺失值检测,并通过观察原始数据发现存在异常取值,对异常值进行了替换;接着通过探索年收入与性别、工作类型等的关系,通过可视化的方法对变量之间的关系进行了描述。最后经过特征编码利用机器学习中逻辑回归对个体年收入进行预测,分类效果较好。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员奇奇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值