特征数据抽取-My way of ML1

ML0提到了机器学习算法的分类,以及在学习算法之前需要学习的点就是特征工程。这篇文章就是介绍特征工程的第一个知识点:特征数据抽取。

笔者所用的机器学习的API都是sklearn里的,关于sklearn自行百度。

字典特征抽取

字典特征抽取就是把字典中一些类别的特征分别转换成特征。代码如下

代码片段首先字典特征抽取的API是sklearn.feature_extraction.Dictvectorizer().先实例化。调用fit_transfrom(x),x是字典,这样就能把字典特征值化,我们打印了特征值的名字用get_fearure_names()
最后的运行结果是我们可以看到他把字典当中的文本数据进行了one—hot编码,以第一个样本为例,不难看出,第一个样本第一个位置为1就代表,city=上海是真,city=北京或者合肥都是假,气温数据是数据所以没有one-hot编码。

文本特征抽取

作用:对文本数据特征值化
类:sklearn.feature_extraction.text.CountVectorizer
返回词频矩阵,这里返回的词频矩阵其实也就是one-hot编码在这里插入图片描述
流程都一样,首先实例化CountVectorizer(),然后fit_transform(文本数据)
在这里插入图片描述

这里对单个英文字母不统计,因为单个英文字母无分类依据。对于中文,逗号分割。但是对于中文默认不支持特征抽取,如果想这样做的化,需要先下载结巴分词pip install jieba

对中文特征值化

在这里插入图片描述
首先调用cut函数分割每个中文单词,之后需要把字符串转换成列表,因为fit_transfrom()函数只能接收列表
运行结果如下
在这里插入图片描述
同样的这样还是one-hot编码

当然这里引入了一个问题

我们对文本特征值化首要的目的是要对文本进行分类,如垃圾邮箱的处理,但是所有的特征都是有用的特征吗,显然不是的,那么这里我们就需要饭呢西词频的重要性,越重要的词就越能成为分类文本的依据
在这里插入图片描述
词频的API是Tfidfvectorizer()
TF-IDF的思想是:如果一个词在一个文档出现的概率高,在另一个文档出现的概率小,那么这个词就具有很好的区分两个文档的能力,不难理解。
结果如下
在这里插入图片描述
这里不难看护一些词的重要性超过0.25,那么这些相对来说就更加能够被用来区分文档

猜你喜欢

转载自blog.csdn.net/qq_34788903/article/details/83242614
way