python - 删除 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 进行聚类。但我想制作没有频率为两个或更少的术语的集群。有人能帮助我吗?
解决方案
您只需要保留最大值小于两个的所有列:
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]]
推荐阅读
- html - 菜单链接未在 wordpress 的新页面中打开
- python - 熊猫从时间戳创建新的分类列
- python - 如何使用 Caffe 近似一个简单的加法?
- rest - 浏览器中的 Hmac 身份验证
- vba - Excel VBA 如何防止用户在 msoFileDialogSaveAs 中点击取消
- python - 计算列表中重复的字符串并打印
- android - Android:如何在不使用自定义布局的情况下更改 AlertDialog 标题文本颜色和背景颜色?
- angular - angular2 中的 PrependChild() 函数
- javascript - 清除 flexbox 列
- angular - 想将数据传递给 route 。怎么做?