特征工程——特征提取
特征提取是特征工程里面的一部分操作,下面开始介绍特征提取:
什么是特征提取呢?
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:None
"""
# 1.获取数据
data = [{
'city': '北京', 'temperature': 100},
{
'city': '上海', 'temperature': 60},
{
'city': '深圳', 'temperature': 30}]
# 2.字典特征提取
# 2.1实例化
transfer = DictVectorizer(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']
这个结果和我们平时的不一样,这个是稀疏矩阵的存储,那再看看sparse=True参数的结果:
返回的结果:
[[ 0. 1. 0. 100.]
[ 1. 0. 0. 60.]
[ 0. 0. 1