3 实例计算
3。1 特征抽取
特征提取是数据挖掘中最重要的步骤,它对最终的结果是很重大的影响的。但是我们首先要知道现实世界是有多复杂的,我们可以利用一个数据集来检验。[1]
那我们用Adult数据集讲解如何借助特征为复杂的现实世界建模。这里我们数据挖掘的目标是,预测一个人是否年收入多余五万美元。首先从http://archive。ics。uci。edu /ml/datasets/Adult[4]网站上点击Data Folder链接下载adult。data和adult。names文件。这些文件中的数据集用特征描述了一个个活生生的人及其他们所处的环境、背景和生活状况。来自优Y尔L论W文Q网wWw.YouERw.com 加QQ7520~18766
打开IPython Notebook,新建一个笔记本文件,导入pandas模块,指定数据集文件的路径,用pandas加载数据集文件。
import os
import pandas as pd
data_folder = os。path。join(os。path。expanduser("~"), "Data",
"Adult")
adult_filename = os。path。join(data_folder, "adult。data")
Using pandas as before, we load the file with read_csv:
adult = pd。read_csv(adult_filename, header=None,
names=["Age", "Work-Class", "fnlwgt",
"Education", "Education-Num",
"Marital-Status", "Occupation",
"Relationship", "Race", "Sex",
"Capital-gain", "Capital-loss",
"Hours-per-week", "Native-Country",
"Earnings-Raw"])
adult。data文件末尾有两处空行,pandas默认把倒数第二行空行作为一条有效数据导入(只不过各列的值为空)。我们需要删除包括无效数字的行(设置inplace参数为真,表示改动当前数据框,而不是新建一个)。
adult。dropna(how='all', inplace=True)
我们还可以查看所有的特征名称。
Adult。columns
下面为所有保存在pandas的Index对象中的特征名称。
Index(['Age', 'Work-Class', 'fnlwgt', 'Education',
'Education-Num', 'Marital-Status', 'Occupation', 'Relationship',
'Race', 'Sex', 'Capital-gain', 'Capital-loss', 'Hours-per-week',
'Native-Country', 'Earnings-Raw'], dtype='object')
选择合适的特征是一项技术活,需要考虑特征与最终结果之间的互相关系。Adult数据集包含连续特征、序数特征。例如Hours-per-week特征表示一个人每周的工作时间。这个特征可用来计算平均工作时间、标准差、最大值和最小值。Pandas提供了常见统计量的计算方法。
adult["Hours-per-week"]。describe()
输出的结果让我们对这个特征有了很多了解。
count 32561。000000
mean 40。437456
std 12。347429
min 1。000000
25% 40。000000
50% 40。000000
75% 45。000000
max 99。000000
dtype: float64
adult数据集也包含一些类别型特征,例如Work-Class(工作),其中它的有些值可以进行量级上的比较,比如不同的就业状况影响收入(比如有工作的人比没有工作的人收入高)。再比如,政府职员的工资不太可能比私企职工工资高。论文网 Python广告投放分类问题中的特征提取方法(4):http://www.youerw.com/jisuanji/lunwen_191827.html