用scikit-learn掌握机器学习(三)特征提取和预处理

从分类数据中提取特征
from sklearn.feature_extraction import DictVectorizer
onehot_encoder = DictVectorizer() #字典转onehot用DictVectorizer()
instances = [{'city': 'New York'},{'city': 'San Francisco'},{'city': 'Chapel Hill'}]
print (onehot_encoder.fit_transform(instances).toarray())

out:[[0. 1. 0.]
[0. 0. 1.]
[1. 0. 0.]]

从文本中提取特征

最常见的文本展现形式是词袋模型。这个表达方式用了多重分类,或者是袋子来编码出现在文本中的词;这个词袋不管语法和词的顺序,它可以被看做onehot编码的延伸。它为文本中每个感兴趣的单词创建一个特性。“词汇袋”模型是由一种直觉所激发的,即包含相似单词的文档往往具有相似的含义。尽管它编码的信息有限,但它可以有效地用于文档分类和检索。一组文档被称为语料库。让我们使用一个包含下面的两个文档的语料库来检查单词袋模型:
corpus = [
‘UNC played Duke in basketball’,
‘Duke lost the basketball game’
]

这个语料库包含八个独特的单词:UNC, played, Duke, in, basketball, lost,the还有game。语料库的独特词汇组成了它的词汇。词袋模型使用一个含有词汇表中每个单词对应元素的特征向量,来表示每个文档。我们的语料库有八个唯一的单词,所以每个文档将由一个带有八个元素的向量来表示。组成一个特征向量的元素的个数称为向量的维数。字典将词汇表映射到特征向量中的索引。
在最基本的词袋表示方法中,特征向量中的每个元素都是一个二进制值数,表示文档中是否出现相应的单词。例如,第一个文档中的第一个单词是UNC。字典中的第一个词是UNC,所以这个向量中的第一个元素等于1。字典里的最后一个词是game。第一个文档不包含单词game,所以它的第8个元素被设为0。CountVectorizer类可以从一个字符串或文件中生成一个词袋。默认情况下,CountVectorizer将文档中的字符转换为小写,并标记文档。
标记化是将字符串分割为符号或有意义的字符序列的过程。符号经常是单词,但它们也可能是短的序列,包括标点符号和词缀。CountVectorizer类使用一个正则表达式,它可以在空格处拆分字符串,并提取长度为两个或多个字符的字符序列。

from sklearn.feature_extraction.text import CountVectorizer
corpus = ['UNC played Duke in basketball','Duke lost the basketball game']
vectorizer = CountVectorizer()
print (vectorizer.fit_transform(corpus).todense())#将稀疏矩阵转化为完整特征矩阵
print (vectorizer.vocabulary_)
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值