特征提升之特征抽取----DictVectorizer

原文

说明:DictVectorizer的处理对象是符号化(非数字化)的但是具有一定结构的特征数据,如字典等,将符号转成数字0/1表示

#-*- coding:utf-8 -*-

#学习目标:使用DictVectorizer对使用字典存储的数据进行特征抽取和向量化

#定义一组字典列表,用来表示多个数据样本(每个字典代表一个数据样本)
measurements = [{'city':'Beijing','temperature':33.},{'city':'London','temperature':12.},{'city':'San Fransisco','temperature':18.}]
#从sklearn.feature_extraction导入DictVectorizer
from sklearn.feature_extraction import DictVectorizer
vec = DictVectorizer()
#输出转化后的特征矩阵
print(vec.fit_transform(measurements).toarray())
#输出各个维度的特征含义
print(vec.get_feature_names())
[[ 1.  0.  0. 33.]
 [ 0.  1.  0. 12.]
 [ 0.  0.  1. 18.]]
['city=Beijing', 'city=London', 'city=San Fransisco', 'temperature']

我们不难发现,DictVectorizer对非数字化的处理方式是,借助原特征的名称,组合成新的特征,并采用0/1的方式进行量化,而数值型的特征转化比较方便,一般情况维持原值即可。

接下来进一步验证这个结论,决定在每个原来的字典结构中,再增加一个符号化特征,”country”

#-*- coding:utf-8 -*-

#定义一组字典列表,用来表示多个数据样本(每个字典代表一个数据样本)
measurements = [{'city':'Beijing','country':'CN','temperature':33.},{'city':'London','country':'UK','temperature':12.},{'city':'San Fransisco','country':'USA','temperature':18.}]
#从sklearn.feature_extraction导入DictVectorizer
from sklearn.feature_extraction import DictVectorizer
vec = DictVectorizer()
#输出转化后的特征矩阵
print(vec.fit_transform(measurements).toarray())
#输出各个维度的特征含义
print(vec.get_feature_names())

[[ 1.  0.  0.  1.  0.  0. 33.]
 [ 0.  1.  0.  0.  1.  0. 12.]
 [ 0.  0.  1.  0.  0.  1. 18.]]
['city=Beijing', 'city=London', 'city=San Fransisco', 'country=CN', 'country=UK', 'country=USA', 'temperature']

你可能感兴趣的:(特征提升之特征抽取----DictVectorizer)