3-feature-extraction-and-preprocessing

3-feature-extraction-and-preprocessing

ID:40703588

大小:2.72 MB

页数:15页

时间:2019-08-06

3-feature-extraction-and-preprocessing_第1页
3-feature-extraction-and-preprocessing_第2页
3-feature-extraction-and-preprocessing_第3页
3-feature-extraction-and-preprocessing_第4页
3-feature-extraction-and-preprocessing_第5页
资源描述:

《3-feature-extraction-and-preprocessing》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、特征提取与处理上一章案例中的解释变量都是数值,比如匹萨的直接。而很多机器学习问题需要研究的对象可能是分类变量、文字甚至图像。本章,我们介绍提取这些变量特征的方法。这些技术是数据处理的前提——序列化,更是机器学习的基础,影响到本书的所有章节。分类变量特征提取许多机器学习问题都有分类的、标记的变量,不是连续的。例如,一个应用是用分类特征比如工作地点来预测工资水平。分类变量通常用独热编码(One-of-KorOne-HotEncoding),通过二进制数来表示每个解释变量的特征。例如,假设city变量有三个值:NewYork

2、,SanFrancisco,ChapelHill。独热编码方式就是用三位二进制数,每一位表示一个城市。scikit-learn里有DictVectorizer类可以用来表示分类特征:In[1]:fromsklearn.feature_extractionimportDictVectorizeronehot_encoder=DictVectorizer()instances=[{'city':'NewYork'},{'city':'SanFrancisco'},{'city':'ChapelHill'}]print(on

3、ehot_encoder.fit_transform(instances).toarray())[[0.1.0.][0.0.1.][1.0.0.]]会看到,编码的位置并不是与上面城市一一对应的。第一个city编码NewYork是[0.1.0.],用第二个元素为1表示。相比用单独的数值来表示分类,这种方法看起来很直观。NewYork,SanFrancisco,ChapelHill可以表示成1,2,3。数值的大小没有实际意义,城市并没有自然数顺序。文字特征提取很多机器学习问题涉及自然语言处理(NLP),必然要处理文字信息。

4、文字必须转换成可以量化的特征向量。下面我们就来介绍最常用的文字表示方法:词库模型(Bag-of-wordsmodel)。词库表示法词库模型是文字模型化的最常用方法。对于一个文档(document),忽略其词序和语法,句法,将其仅仅看做是一个词集合,或者说是词的一个组合,文档中每个词的出现都是独立的,不依赖于其他词是否出现,或者说当这篇文章的作者在任意一个位置选择一个词汇都不受前面句子的影响而独立选择的。词库模型可以看成是独热编码的一种扩展,它为每个单词设值一个特征值。词库模型依据是用类似单词的文章意思也差不多。词库模型

5、可以通过有限的编码信息实现有效的文档分类和检索。一批文档的集合称为文集(corpus)。让我们用一个由两个文档组成的文集来演示词库模型:In[2]:corpus=['UNCplayedDukeinbasketball','Dukelostthebasketballgame']文集包括8个词:UNC,played,Duke,in,basketball,lost,the,game。文件的单词构成词汇表(vocabulary)。词库模型用文集的词汇表中每个单词的特征向量表示每个文档。我们的文集有8个单词,那么每个文档就是由一

6、个包含8位元素的向量构成。构成特征向量的元素数量称为维度(dimension)。用一个词典(dictionary)来表示词汇表与特征向量索引的对应关系。在大多数词库模型中,特征向量的每一个元素是用二进制数表示单词是否在文档中。例如,第一个文档的第一个词是UNC,词汇表的第一个单词是UNC,因此特征向量的第一个元素就是1。词汇表的最后一个单词是game。第一个文档没有这个词,那么特征向量的最后一个元素就是0。CountVectorizer类会把文档全部转换成小写,然后将文档词块化(tokenize)。文档词块化是把句子分

7、割成词块(token)或有意义的字母序列的过程。词块大多是单词,但是他们也可能是一些短语,如标点符号和词缀。CountVectorizer类通过正则表达式用空格分割句子,然后抽取长度大于等于2的字母序列。scikit-learn实现代码如下:In[3]:fromsklearn.feature_extraction.textimportCountVectorizercorpus=['UNCplayedDukeinbasketball','Dukelostthebasketballgame']vectorizer=Coun

8、tVectorizer()print(vectorizer.fit_transform(corpus).todense())print(vectorizer.vocabulary_)[[11010101][11101010]]{'unc':7,'played':5,'game':2,'in':3,'basketball':0,'t

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
相关文章
更多
相关标签