小学期实训01

实验名称

人口收入普查数据探索

实验目的

通过特征提取,使用机器学习算法计算得到哪些因素对收入的影响最大。本实验作为机器学习入门级实 验,仅简单地针对不同学历人员的收入、不同性别人数等做统计,主要目的是使大家了解机器学习的思 想和掌握pandas库对于数据处理的操作。

实验背景

本实验为一个入门级的测试案例,希望通过这次实验帮助大家学习如何通过算法来挖掘数据中的价值: 通过截取一份人口普查的数据,对学历和收入等进行统计和分析。本案例所用数据集为UCI开源数据集 Adult,其为针对美国某区域的一次人口普查结果,共32561条数据。具体字段如下表:
字段名 含义 类型 age 年龄 double workclass 工作类型 string fnlwgt 序号 string education 教育程度 string education_num 受教育时间 double maritial_status 婚姻状况 string occupation 职业 string relationship 关系 string race 种族 string sex 性别 string capital_gain 资本收益 string capital_loss 资 本损失 string hours_per_week 每周工作小时数 double native_country 原籍 string income 收入 string

实验原理

一、机器学习和数据挖掘

机器学习(Machine Learning,ML)是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算 法复杂度理论等多门学科。其专门研究计算机是怎样模拟或实现人类的学习行为,以获取新的知识或技 能,重新组织已有的知识结构,使之不断改善自身的性能。 数据挖掘是从海量数据中获取有效的、新颖 的、潜在有用的、最终可理解的模式的非平凡过程。数据挖掘中用到了大量的机器学习界提供的数据分 析技术和数据库提供的数据管理技术。 学习能力是智能行为的一个非常重要的特征,不具有学习能力的 系统很难称之为一个真正的智能系统,而机器学习则希望(计算机)系统能够利用经验来改善自身的性能, 因此该领域一直是人工智能的核心研究领域之一。在计算机系统中,“经验”通常是以数据的形式存在 的,因此,机器学习不仅涉及对人的认知学习过程的探索,还涉及对数据的分析处理。实际上,机器学 习已经成为计算机数据分析技术的创新源头之一。由于几乎所有的学科都要面对数据分析任务,因此机 器学习已经开始影响到计算机科学的众多领域,甚至影响到计算机科学之外的很多学科。所以,机器学 习是数据挖掘中的一种重要工具。

二、 Pandas库

Pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。Pandas 纳入了大量库 和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。pandas提供了大量能使我们快速便 捷地处理数据的函数和方法,它可以对数据进行导入、清洗、处理、统计和输出等。所以说,它是使 Python成为强大而高效的数据分析环境的重要因素之一。
要使用Pandas库的内置函数和方法,需要先下载第三方库函数,然后利用import进行引用。

实验步骤

一、环境准备

启动jupyter。打开终端,在终端中输入下列命令,点击回车按钮后即可打开链接

jupyter notebook

二、导入相关依赖模块及库,包括导入pandas、numpy、matplotlib等。

import warnings 
import numpy as np 
import pandas as pd 
import seaborn as sns 
import matplotlib.pyplot as plt

三、加载数据,载入实验所需的Adult数据集。

data = pd.read_csv(r"adult.data.csv")
data.head()
ageworkclassfnlwgteducationeducation-nummarital-statusoccupationrelationshipracesexcapital-gaincapital-losshours-per-weeknative-countrysalary
039State-gov77516Bachelors13Never-marriedAdm-clericalNot-in-familyWhiteMale2174040United-States<=50K
150Self-emp-not-inc83311Bachelors13Married-civ-spouseExec-managerialHusbandWhiteMale0013United-States<=50K
238Private215646HS-grad9DivorcedHandlers-cleanersNot-in-familyWhiteMale0040United-States<=50K
353Private23472111th7Married-civ-spouseHandlers-cleanersHusbandBlackMale0040United-States<=50K
428Private338409Bachelors13Married-civ-spouseProf-specialtyWifeBlackFemale0040Cuba<=50K

四、计算数据集中有多少男性和女性。

data['sex'].value_counts()
Male      21790
Female    10771
Name: sex, dtype: int64

五、计算数据集中女性的平均年龄是多少。

data[data['sex'] == 'Female']['age'].mean()
36.85823043357163

六、计算数据集中德国公民的比例是多少。

data[data['native-country'] == 'Germany'].shape[0]/data.shape[0]
0.004207487485028101

七、计算年收入超过 50K 和低于 50K 人群年龄的平均值和标准差是多少。

richer = data[data['salary'] == '>50K']['age']
poorer = data[data['salary'] == '<=50K']['age']
print('种类\t平均值\t标准差\t')
print('>50K\t'+str(richer.mean())+'\t'+str(richer.std())+'\t')
print('<=50K\t'+str(poorer.mean())+'\t'+str(poorer.std())+'\t')
种类	平均值	标准差	
>50K	44.24984058155847	10.51902771985177	
<=50K	36.78373786407767	14.020088490824813	

八、计算年收入超过 50K 的人群是否都接受过高中以上教育

data[data['salary'] == '>50K']['education'].unique()
# 显示收入高于50K的人群中学历种类的集合,所以结果为NO
array(['HS-grad', 'Masters', 'Bachelors', 'Some-college', 'Assoc-voc',
       'Doctorate', 'Prof-school', 'Assoc-acdm', '7th-8th', '12th',
       '10th', '11th', '9th', '5th-6th', '1st-4th'], dtype=object)

九、使用 groupby 和 describe 统计不同种族和性别人群的年龄分布数据

data.groupby(['race','sex'])['age'].describe()

countmeanstdmin25%50%75%max
racesex
Amer-Indian-EskimoFemale119.037.11764713.11499117.027.036.046.0080.0
Male192.037.20833312.04956317.028.035.045.0082.0
Asian-Pac-IslanderFemale346.035.08959512.30084517.025.033.043.7575.0
Male693.039.07359312.88394418.029.037.046.0090.0
BlackFemale1555.037.85401912.63719717.028.037.046.0090.0
Male1569.037.68260012.88261217.027.036.046.0090.0
OtherFemale109.031.67889911.63159917.023.029.039.0074.0
Male162.034.65432111.35553117.026.032.042.0077.0
WhiteFemale8642.036.81161814.32909317.025.035.046.0090.0
Male19174.039.65249813.43602917.029.038.049.0090.0

十、统计男性高收入人群中已婚和未婚(包含离婚和分居)人群各自所占数量。

data[(data['sex'] == 'Male')&(data['salary'] == '>50K') & data['marital-status'].str.startswith('Married')].shape[0]

5965
data[(data['salary'] == '>50K')&(data['sex'] == 'Male') &
     (data['marital-status'].isin(['Never-married',
                                   'Separated', 'Divorced']))].shape[0]

658

十一、统计数据集中最长周工作小时数及对应的人数,并计算该群体中收入超过 50K 的比例。

maxWorkHour = data['hours-per-week'].max()
#最长周工作小时数及对应的人数
m1 = data[data['hours-per-week'] == maxWorkHour]
ratio = m1[m1['salary'] == '>50K'].shape[0]/m1.shape[0]
print('Max time - {0} hours./week,\nTotal number of such hard workers {1},\nPercentage of rich among then {2}'.format(maxWorkHour,m1.shape[0],ratio))
Max time - 99 hours./week,
Total number of such hard workers 85,
Percentage of rich among then 0.29411764705882354

十一、计算各国超过和低于 50K 人群各自的平均周工作时长。

data.groupby(['native-country','salary'])['hours-per-week'].mean()

native-country              salary
?                           <=50K     40.164760
                            >50K      45.547945
Cambodia                    <=50K     41.416667
                            >50K      40.000000
Canada                      <=50K     37.914634
                            >50K      45.641026
China                       <=50K     37.381818
                            >50K      38.900000
Columbia                    <=50K     38.684211
                            >50K      50.000000
Cuba                        <=50K     37.985714
                            >50K      42.440000
Dominican-Republic          <=50K     42.338235
                            >50K      47.000000
Ecuador                     <=50K     38.041667
                            >50K      48.750000
El-Salvador                 <=50K     36.030928
                            >50K      45.000000
England                     <=50K     40.483333
                            >50K      44.533333
France                      <=50K     41.058824
                            >50K      50.750000
Germany                     <=50K     39.139785
                            >50K      44.977273
Greece                      <=50K     41.809524
                            >50K      50.625000
Guatemala                   <=50K     39.360656
                            >50K      36.666667
Haiti                       <=50K     36.325000
                            >50K      42.750000
                                        ...    
Mexico                      >50K      46.575758
Nicaragua                   <=50K     36.093750
                            >50K      37.500000
Outlying-US(Guam-USVI-etc)  <=50K     41.857143
Peru                        <=50K     35.068966
                            >50K      40.000000
Philippines                 <=50K     38.065693
                            >50K      43.032787
Poland                      <=50K     38.166667
                            >50K      39.000000
Portugal                    <=50K     41.939394
                            >50K      41.500000
Puerto-Rico                 <=50K     38.470588
                            >50K      39.416667
Scotland                    <=50K     39.444444
                            >50K      46.666667
South                       <=50K     40.156250
                            >50K      51.437500
Taiwan                      <=50K     33.774194
                            >50K      46.800000
Thailand                    <=50K     42.866667
                            >50K      58.333333
Trinadad&Tobago             <=50K     37.058824
                            >50K      40.000000
United-States               <=50K     38.799127
                            >50K      45.505369
Vietnam                     <=50K     37.193548
                            >50K      39.200000
Yugoslavia                  <=50K     41.600000
                            >50K      49.500000
Name: hours-per-week, Length: 82, dtype: float64
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值