字典特征抽取

特征工程介绍:

  特征工程就是帮助我们对特征进行处理。实际上就是数据处理

  数据和特征决定了机器学习的上线,而模型和算法只是逼近这个上线而已。

特征抽取(特征提取):

  机器学习算法 - 统计方法-数学公式

  文本类型 -->>数值

  类型 -->>数值

  特征提取定义:

  1、将任意数据(如文本和图像)转换为可用于机器学习的数字特征(特征值化是为了计算机更好的去理解数据)

      a、字典特征提取(特征离散化)

      b、文本特征提取

      c、图像特征提取(深度学习)

  2、特征提取API

    sklearn.feature_extraction

 

字典特征提取: ---类别--> one-hot编码

  from sklearn.feature_extraction import DictVectorizer(sparse = True)   (Vectorizer 表示向量)

    DictVectorizer.fit_transform(x) x:字典或者包含的迭代器返回值:返回sparse矩阵  (sparse 表示稀疏的意思)

    DictVectorizer.inverse_transform(x) x:array数组或者sparse矩阵 返回值:转换之前的数据格式

    DictVectorizer.get_feature_names() 返回类别的名称

 

例子:

data =[{"city":"北京","temperature":100},{"city":"上海","temperature":60},{"city":"深圳","temperature":30}]
# 1、实例化一个转换器
transfer = DictVectorizer()
# 2、调用fit_transform()
data_new = transfer.fit_transform(data)
print(data_new)

得到结果为:

 

为什么结果这么简单呢?因为from sklearn.feature_extraction import DictVectorizer(sparse = True)这里有个默认参数sparse,所以结果就是个稀疏矩阵,它只显示非零数字按位置表示出来,这样为了节省内存,提高加载速度!
那么我们将

transfer = DictVectorizer(sparse=False)
打印得到结果为

结果就一目了然了。我们还可以将这个矩阵的特征值打印出来

print(transfer.get_feature_names())
结果为:

 



 

应用场景:

  1、数据集当中类别特征比较多的情况下

    将数据集的特征 --->字典类型

    Dictvectorize转换

  2、本身拿到的数据就是字典类型

 

posted @ 2019-07-17 15:57  JakeTan  阅读(100)  评论(0)    收藏  举报