首页 > 解决方案 > 删除 CountVectorizer 中单次出现的单词

问题描述

我正在使用CountVectorizer()创建一个词频矩阵。我想删除频率为两个或更少的词汇表中的所有术语。然后我 tfidfTransformer()用于创建 ti*idf 矩阵

vectorizer=CountVectorizer()
X =vectorizer.fit_transform(docs) 

matrix_terms = np.array(vectorizer.get_feature_names())     
matrix_freq = np.asarray(X.sum(axis=0)).ravel()

tfidf_transformer=TfidfTransformer()     
tfidf_matrix = tfidf_transformer.fit_transform(X)

然后我想使用 LSA 算法进行降维,并使用 k-means 进行聚类。但我想制作没有频率为两个或更少的术语的集群。有人能帮助我吗?

标签: pythonk-meansdimensionality-reduction

解决方案


您只需要保留最大值小于两个的所有列:

import numpy as np

count_vec = np.random.randint(0, 3, (5, 10))
print(count_vec)
[[1 1 2 0 2 2 2 0 0 2]
 [0 1 0 2 1 1 0 1 0 0]
 [0 1 0 1 0 1 1 2 2 2]
 [0 0 2 1 1 1 0 0 0 2]
 [1 0 0 2 2 2 1 1 2 2]]

仅保留最大值低于 2 的列:

count_vec = count_vec[:, count_vec.max(axis=1) >= 2]
print(count_vec)
[[2 1 2 2 1 0 1 0 1]
 [1 1 0 2 0 0 2 0 1]
 [0 0 0 2 0 1 0 1 0]
 [1 0 2 0 2 2 2 1 2]
 [1 2 2 1 1 0 2 2 1]]

推荐阅读