天天看点

python sklearn包中的CountVectorizer函数

补充

最近在做信息增益实现特征选择,在使用CountVectorize提取到的特征拟合时,出现类型不符导致取值失败的问题(如图)

python sklearn包中的CountVectorizer函数

解决方案 将提取到的特征转换成稀疏矩阵的表示方式。代码如下

contVec = CountVectorizer()  # 创建词袋数据结构,将文本中的词语转换为词频矩阵
  train = contVec.fit_transform(train)  # 计算各个词语出现的次数
  train = train.toarray() #转换成稀疏矩阵
  print("train:",train)
  print("Shape of training features: ", train.shape)
  print("Shape of training labels:  ", target.shape)
  target = list(target)
           

问题解决,运行结果正常

python sklearn包中的CountVectorizer函数

===========补充完,以下为CountVectorize的使用

使用前需要导入sklearn包

from sklearn.feature_extraction.text import TfidfVectorizer, CountVectorizer
           

CountVectorize

CountVectorizer是特征数值计算类,是一个文本特征提取方法。对于每一个训练文本,它只考虑每种词汇在该训练文本中出现的频率,可用于密码体制识别的特征提取。

CountVectorizer会将文本中的词语转换为词频矩阵,它通过fit_transform函数计算各个词出现的频数。

参数:

CountVectorizer(input='content', encoding='utf-8',  decode_error='strict', strip_accents=None, lowercase=True, preprocessor=None, tokenizer=None, stop_words=None, 
token_pattern='(?u)\b\w\w+\b', ngram_range=(1, 1), analyzer='word', max_df=1.0, min_df=1, max_features=None, vocabulary=None, binary=False, dtype=<class 'numpy.int64'>)
           

常用方法:

fit_transform(X) 拟合模型,并返回文本矩阵

transform(Y) 学习词汇词典和返回术语文档矩阵。

下面是我的代码

#特征提取
contVec = CountVectorizer()#创建词袋数据结构,将文本中的词语转换为词频矩阵
train = contVec.fit_transform(train)#计算各个词语出现的次数
print("-----feature name of conVec")
print(contVec.get_feature_names())#列表形式呈现文章生成的词典
print("-----vocabulary of conVec(key,value)")
print(contVec.vocabulary_	)#字典类型,key为关键词,value是特征索引
print("------------")
print(train)#形如 (0, 695)	1,第0个列表元素,**词典中索引为695的元素**, 词频1
test_data = contVec.transform(test_data)
           

contVec.get_feature_names() 以列表形式呈现文章生成的词典

contVec.vocabulary_ 以字典类型呈现文章生成的词典,key为关键词,value是特征索引