Scikit-learn CountVectorizer与TfidfVectorizer

本文详述了Scikit-learn中的CountVectorizer和TfidfVectorizer。CountVectorizer用于统计文本中词汇的频率,构建词频矩阵,而TfidfVectorizer通过结合词频和逆文档频率(IDF)来衡量词汇的重要性,更适用于大量文本。TF-IDF值越高,词汇在文档中的重要性越大。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文主要介绍两个类的基本使用,CountVectorizer与TfidfVectorizer,这两个类都是特征数值计算的常见方法。对于每一个训练文本,CountVectorizer只考虑每种词汇在该训练文本中出现的频率,而TfidfVectorizer除了考量某一词汇在当前训练文本中出现的频率之外,同时关注包含这个词汇的其它训练文本数目的倒数。相比之下,训练文本的数量越多,TfidfVectorizer这种特征量化方式就更有优势。

1. sklearn.feature_extraction.text.CountVectorizer

这个类的主要作用是统计每一个训练文本中,每个单词出现的频率;然后构成一个特征矩阵,每一行表示一个训练文本的词频统计结果。其思想是,先根据所有训练文本,不考虑其出现顺序,只将训练文本中每个出现过的词汇单独视为一列特征,构成一个词汇表(vocabulary list),该方法又称为词袋法(Bag of Words)

#python2.7 sklearn version 0.18.1
from sklearn.feature_extraction.text import CountVectorizer
X_test = ['I sed about sed the lack',
'of any Actually']

count_vec=CountVectorizer(stop_words=None)
print count_vec.fit_transform(X_test).toarray()
print '\nvocabulary list:\n\n',count_vec.vocabulary_

>>
>>
[[1 0 0 1 1 0 2 1]
 [0 1 1 0 0 1 0 0]]
 
  (0, 4)	1
  (0, 7)	1
  (0, 0)	1
  (0, 6)	2
  (0, 3)	1
  (1, 1)	1
  (1, 2)	1
  (1, 5)	1
  
vocabulary list:

{
   
   u'about': 0, u'i': 3, u'of': 5, u'lack': 4, u'actually': 1, u'sed': 6, u'the': 7, u'any': 2}

关于上面的代码,有几点说明:
(1)第6行代码中,stop_words=None表示不去掉停用词,若改为stop_words='english’则去掉停用词;
(2)第12,13行,分别是X_test中,两段文本的词频统计结果;
(3)第15-22行,是稀疏矩阵的表示方式;
(4)CountVectorizer同样适用于中文

# -*- coding: utf-8 -*-
from sklearn.feature_extraction.text import CountVectorizer

X_test = [u'没有 你 的 地方 都是 他乡',u'没有 你 的 旅行 都是 流浪']

count_vec=CountVectorizer
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值