《Python机器学习及实践:从零开始通往Kaggle竞赛之路》第3章 进阶篇 学习笔记(一)3.1.1.1特征抽取总结

目录

3.1.1.1特征抽取

0、引言

(1)背景

(2)模型实用技巧

(3)特征提升

1、特征抽取和向量化

2、特征数值计算


3.1.1.1特征抽取

0、引言

(1)背景

随着近些年机器学习研究与应用的快速发展,经典模型渐渐无法满足日益增长的数据量和复杂的数据分析需求。因此,越来越多更加高效而且强力的学习模型以及对应的程序库正逐渐被设计和编写,并慢慢被科研圈和工业界所广泛接受与采用。

这些模型和程序库包括:用于自然语言处理的NLTK程序包词向量技术Word2Vec;能够提供强大预测能力的XGBoost模型,以及Google发布的用于深度学习的TensorFlow框架等等。更加令人振奋的是,上述这些最为流行的程序库和模型,不但提供了Python的编程接口API,而且有些成为Python编程语言的工具包,更是方便了后续的学习和使用。

(2)模型实用技巧

在第2章中,一旦确定使用某个模型,程序库就可以从标准的训练数据中,依靠默认配置学习到模型所需要的参数;接下来,便可以利用这组得来的参数指导模型在测试数据集上进行预测,进而对模型的表现性能进行评价。

但是,这套方案并不能保证:

①所有用户训练的数据特征都是最好。

②学习得到的参数一定是最优的。

③默认配置下的模型总是最佳的。

也就是说,可以从多个角度对在前面所使用过的模型进行性能提升。介绍多种提升模型性能的方式,包括如何预处理数据控制参数训练以及优化模型配置等方法。

(3)特征提升

早期机器学习的研究与应用,受模型种类和运算能力的限制。因此,大部分研发人员把更多的精力放在对数据的预处理上。他们期望通过对数据特征的抽取或者筛选来达到提升模型性能的目的。所谓特征抽取,就是逐条将原始数据转化为特征向量的形式,这个过程同时涉及对数据特征的量化表示;而特征筛选则更进一步,在高维度、已量化的特征向量中选择对指定任务更有效的特征组合,进一步提升模型性能。

1、特征抽取和向量化

原始数据的种类有很多种,除了数字化的信号数据(声纹、图像),还有大量符号化的文本。然而,无法直接将符号化的文字本身用于计算任务,而且需要通过某些处理手段,预先将文本向量化为特征向量。

有些用符号表示的数据特征已经相对结构化,并且以字典这种数据结构进行存储。这时,使用DictVectorizer对特征进行抽取和向量化。

# 代码55:DictVectorizer对使用字典存储的数据进行特征抽取与向量化
# 定义一组字典列表,用来表示多个数据样本(每个字典代表一个数据样本)。
measurements = [{'city': 'Dubai', 'temperature': 33.}, {'city': 'London', 'temperature': 12.}, {'city': 'San Fransisco', 'temperature': 18.}]
# 从sklearn.feature_extraction导入DictVectorizer。
from sklearn.feature_extraction import DictVectorizer

# 初始化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=Dubai', 'city=London', 'city=San Fransisco', 'temperature']

结论:在特征向量化的过程中,DictVectorizer对于类别型与数值型特征的处理方式有很大差异。由于类别型特征无法直接数字化表示,因此需要借助原特征的名称,组合产生新的特征,并采用0/1二值方式进行量化;而数值型特征的转化则相对方便,一般情况下只需要维持原始特征值即可。

2、特征数值计算

另外一些文本数据则表现得更为原始,几乎没有使用特殊的数据结构进行存储,只是一系列字符串。处理这些数据,比较常用的文本特征表示方法为词袋法顾名思义,不考虑词语出现的顺序,只是将训练文本中的每个出现过的词汇单独视作一列特征。称这些不重复的词汇集合为词表,于是每条训练文本都可以在高维度的词表上映射出一个特征向量。

而特征数值的

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值