当前位置:   article > 正文

[机器学习与scikit-learn-42]:特征工程-特征提取(编码)-1-从字典中提取特征_机器学习的特征提取公司

机器学习的特征提取公司

作者主页(文火冰糖的硅基工坊):文火冰糖(王文兵)的博客_文火冰糖的硅基工坊_CSDN博客

本文网址:


目录

前言:

第1章 特征提取概述

1.1 什么是特征提取

1.2 特征提取与特征选项的区别与联系

1.3 特征提取的方法

第2章 字典中提取特征

2.1 概述

2.2 代码案例分析


前言:

机器学习算法的输入是样本的多个维度的特征,特征来自于原始样本数据,但有不是原始的样本数据。样本的特征与原始数据之间并非完全等价的,在机器学习算法学习中,大部分生成的原始数据就是特征,然后在解决现实问题时,原始数据往往无法直接作为特征值,如文本数据,语音数据他们都无法直接作为模型的特征数据。

第1章 特征提取概述

1.1 什么是特征提取

特征提取和特征选择都是从原始样本数据中找出最有效(同类样本的不变性、不同样本的鉴别性、对噪声的鲁棒性)的特征。

特征提取提取并不是必须的,有时候,原始的样本数据就可以表达为特征,这时候就不一定需要在记性特征提取了。

有时候,原始的样本数据无法用于机器学习的模型输入,这就需要从原始的数据中提取特征,然后转换成适合机器学习模型训练的特征数据。

1.2 特征提取与特征选项的区别与联系

特征提取:将原始特殊数据转换为一组具有明显物理意义(Gabor、几何特征[角点、不变量]、纹理[LBP HOG])或者统计意义或核的特征数据。

特征选择:从特征集合中挑选一组最具统计意义和典型性的特征,而去掉非典型性、不重要的特征,达到特征的降维。用马克思哲学的观点来看:就是抓住主要矛盾、以及矛盾的主要方面,这就是特征选择 。

1.3 特征提取的方法

(1)字典中提取特征:DictVectorizer

(2)文本中提取特征:词频向量(CountVectorizer) TF-IDF向量(TfidfVectorizer,TfidfTransformer) 特征哈希向量(HashingVectorizer)

(3)图像中提取特征: 提取像素矩阵提取边缘和兴趣点。

第2章 字典中提取特征

2.1 概述

用python中的字典存储原始数据(可能是字符串数据)是一种常用的做法。

其优点是直观、容易理解。

但是sklearn的模型的输入特征必须是numpy或scipy数组,存放的必须是数字

这时候就需要把字典中的字符型特征数据转换成numpy或scipy数组的数字

(1)可以用DictVectorizer从字典中加载特征时候转换成numpy数组

(2)并对非数字的分类特征采用独热编码(one-hot),得到一个经过oneHot编码后的特征数据(这是DictVectorizer最重要的功能

2.2 代码案例分析

  1. from sklearn.feature_extraction import DictVectorizer
  2. # 定义字典 =keyvalue
  3. # 如下有三个样本,每个样本2个特征值:城市、温度
  4. measurements = [
  5. {'city': 'Dubai', 'temperature': 33.},
  6. {'city': 'London', 'temperature': 12.},
  7. {'city': 'San Francisco', 'temperature': 18.},
  8. ]
  9. print(measurements)
  10. # 创建一个字典转换特征的对象
  11. vec = DictVectorizer()
  12. # 把measurements字典中的value值(字符串)转换成oneHot编码值
  13. X = vec.fit_transform(measurements).toarray()
  14. print("特征值名称:", vec.get_feature_names())
  15. print("对字符串特征值进行OneHot编码后的特征值:\n", X)
[{'city': 'Dubai', 'temperature': 33.0}, {'city': 'London', 'temperature': 12.0}, {'city': 'San Francisco', 'temperature': 18.0}]
特征值名称: ['city=Dubai', 'city=London', 'city=San Francisco', 'temperature']
对字符串特征值进行OneHot编码后的特征值:
 [[ 1.  0.  0. 33.]
 [ 0.  1.  0. 12.]
 [ 0.  0.  1. 18.]]

备注:

(1)城市是分类标签

有三种字符串行分类:Dubai、London、San Francisco,这三种字符型分类,属于样本标签数据,然后字符串分类类型是无法用于模型训练的。经过DictVectorizer变换后,就转换成了OneHot编码值:100、010、001三个标签值。

(2)温度

温度已经是数值数据了,不需要编码转换。

(3)字典转换成数组

字典:key:value

特征数值:需要把key提取出来,作为一列样本数据或标签的名称。key本身不是数据和标签,因此可以保留其名称:如下所示:

temperature    city

33.0                100

12                   010

18                   001

转换后,就可以变成模型所需要的样本数据X, Y了。


作者主页(文火冰糖的硅基工坊):文火冰糖(王文兵)的博客_文火冰糖的硅基工坊_CSDN博客

本文网址:

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号