集成学习--人口普查(美国)收入水平分类预测

一、概述

目的

  • 熟练掌握pandas对数据集的基本操作方法
  • 掌握matplotlib、pandas、seaborn绘制数据图表的方法
  • 了解数据探查-数据清洗-模型训练-性能检验的基本机器学习应用过程
  • 掌握集成学习模型训练及超参数优化的方法
  • 理解特征选取的意义和初步的方法

环境

  • Python 3.6+
  • pandas, matplitlib, seaborn, skearn, xgboost

实验任务

从指定的数据源读取数据,对数据进行数据探查、数据预清洗、数据预处理,特征分析、选取合适的特征,构造分类模型,确定一个人的年收入是否超过50K。

  • 数据来源:1994年美国人口普查数据库。(原始数据下载地址:https://archive.ics.uci.edu/ml/datasets/Adult )。数据存放在data目录中,其中,adult.data存放训练数据,adult.test存放测试数据。
  • 特征列
    • age:年龄,整数
    • workclass:工作性质,字符串,包含少数几种取值,例如:Private、State-gov等
    • education:教育程度,字符串,包含少数几种取值,例如:Bachelors、Masters等
    • education_num:受教育年限,整数
    • maritial_status:婚姻状况,字符串,包含少数几种取值,例如:Never-married、Divorced等
    • occupation:职业,字符串,包含少数几种取值,例如:Sales、Tech-Support等
    • relationship:亲戚关系,字符串,包含少数几种取值,例如:Husband、Wife等
    • race:种族,字符串,包含少数几种取值,例如:White、Black等
    • sex:性别,字符串,包含少数几种取值,例如:Female, Male
    • capital_gain:资本收益,浮点数
    • capital_loss:资本损失,浮点数
    • hours_per_week:每周工作小时数,浮点数
    • native_country:原籍,包含少数几种取值,例如:United-States, Mexico等
  • 分类标签列:income
    • >50K
    • <=50K
链接:https://pan.baidu.com/s/1tkyLks_nNlMbz9N9PP-2CA?pwd=6688 
提取码:6688

二、数据探查

熟悉数据,查看数据结构和数据分布情况

1. 读取数据文件,查看行列信息

  • 文本(字符串)字段的Dtype属性为"object"
import numpy as np
import pandas as pd

train_data_path = 'adult.data'
test_data_path = 'adult.test' \
                 ''

train_data = pd.read_csv(train_data_path, header=None)    # 训练数据文件中不包含列名
test_data = pd.read_csv(test_data_path, header=None, skiprows=1)    # 测试文件中的第一行数据无意义,应跳过

# 指定各个列的名称
col_labels = ['age', 'workclass', 'fnlwgt', 'education', 'education_num', 'marital_status',
              'occupation', 'relationship', 'race', 'sex', 'capital_gain', 'capital_loss',
              'hours_per_week', 'native_country', 'wage_class']
train_data.columns = col_labels
test_data.columns = col_labels

#打印通过info函数查看数据信息
print(train_data.info())

2. 查看数值类型列的数据描述信息

  • 对于数值类型的列,可以分别查看每列的基本统计信息,例如:数据个数、均值、标准差、极值、四分位数、中位数
#打印查看数值列统计信息 哪一个函数获取统计信息?
print(train_data.describe())

3.以可视化的方式查看数值类型的取值分布情况

  • 观察上面获取的数据统计信息,会发现什么问题?
  • 在上一步骤中,capital_gain和capital_loss列的极小值、四分位数均为0,而极大值很大,这意味着其数据主要分布在0附近。
  • 数据可视化可以直观看到数据的分布情况,可以通过分箱统计的方式查看数值分布
  • 直方统计图是很直观的查看数值分布的方法。下面的代码将所有数值分成20个区间,然后统计每个区间中的数据个数
#from datashader.examples.streaming import df
import matplotlib.pyplot as plt
%matplotlib inline 

numeric_columns = ['age','fnlwgt','education_num','capital_gain','capital_loss','hours_per_week']
#为numeric_colums列表中每一项单独绘制直方图。
#for 循环实现 绘图2行 3列 6个子图
for i in range(len(numeric_columns)):#列标签的长度循环
    plt.subplot(2,3,i+1)#2行,3列的数据,并添加每一个标签
    #获取数据
    column_data = train_data[numeric_columns[i]]
    #为当前子图添加标题添加每一个标题,赋值给column_data
    plt.title(numeric_columns[i])
    #绘制直方统计图 柱的数量bins=20 figsize:16,12
    column_data.
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

伪_装

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

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

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

打赏作者

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

抵扣说明:

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

余额充值