决策树算法4-4.1字典特征提取操作

1 特征提取

1.1 定义

将任意数据(如文本或图像)转换为可用于机器学习的数字特征

注:特征值化是为了计算机更好的去理解数据

  • 特征提取分类
    • 字典特征提取(特征离散化)
    • 文本特征提取
    • 图像特征提取

1.2 特征提取API

sklearn.feature_extraction

2 字典特征提取

作用:对字典数据进行特征值化
sklearn.feature_extraction.DictVectorizer(sparse=True,…)

  • DictVectorizer.fit_transform(X)
    • 使用该方法进行特征转换
    • X:字典或者包含字典的迭代器返回值
    • 返回sparse矩阵
  • DictVectorizer.get_feature_names()
    • 返回类别名称

2.1 应用

我们对以下数据进行特征提取

[{'city': '北京','temperature':100},
{'city': '上海','temperature':60},
{'city': '深圳','temperature':30}]

2.2 流程分析

  • 实例化类DictVectorizer
  • 调用fit_transform方法输入数据并转换(注意返回格式)
from sklearn.feature_extraction import DictVectorizer
def dict_demo():
    """
    字典特征提取
    :return:
    """
    # 1 获取数据
    data= [{'city': '北京','temperature':100},
          {'city': '上海','temperature':60},
          {'city': '深圳','temperature':30}]
    # 2 特征抽取
    # 2.1 实例化
    transfer=DictVectorizer(sparse=False)# sparse为true时,为sparse矩阵,节省空间,读取速度快
    # 2.2 转换
    new_data=transfer.fit_transform(data)
    print(new_data)
    # 2.3 获取具体名称
    names=transfer.get_feature_names()
    print(names)
if __name__ == '__main__':
    dict_demo() 

注意观察没有加上sparse=False参数的结果

返回的结果:
   (0, 1)    1.0
  (0, 3)    100.0
  (1, 0)    1.0
  (1, 3)    60.0
  (2, 2)    1.0
  (2, 3)    30.0
特征名字:
 ['city=上海', 'city=北京', 'city=深圳', 'temperature']

这个结果并不是我们想要看到的,所以加上参数,得到想要的结果:

返回的结果:
 [[   0.    1.    0.  100.]
 [   1.    0.    0.   60.]
 [   0.    0.    1.   30.]]
特征名字:
 ['city=上海', 'city=北京', 'city=深圳', 'temperature']

我们把这个处理数据的技巧叫做”one-hot“编码:
总结:对于特征当中存在类别信息的我们都会做one-hot编码处理

posted @ 2021-09-23 19:33  Trouvaille_fighting  阅读(381)  评论(0)    收藏  举报