我正在使用 Python 处理 20newsgroup 数据集。使用 CountVectorizer 后,然后使用 gensim api 来增强术语频率。我尝试安装它,但收到此错误。
这是我的代码:
from sklearn.feature_extraction.text import CountVectorizer
cv = CountVectorizer(max_features=2000)
from sklearn.datasets import fetch_20newsgroups
twenty_train = fetch_20newsgroups(subset='train', shuffle=True)
X_train_counts = count_vect.fit_transform(twenty_train.data)
from gensim.sklearn_api import TfIdfTransformer
model = TfIdfTransformer(smartirs='atn')
tfidf_aug = model.fit_transform(X_train_counts())
运行上面的代码后,我收到此错误:
TypeError:稀疏矩阵长度不明确;使用 getnnz() 或 shape[0]
像这样在最后使用 getnz() 后。
tfidf_aug = model.fit_transform(X_train_counts().getnnz())
我收到此错误:
类型错误:“int”对象不可迭代
最佳答案
TfidfTransformer 的输入必须是 (int,int) 的迭代器,如上所述 here 。因此,在将稀疏矩阵转换为 gensim 模型之前,您必须对其进行处理。
试试这个
from sklearn.datasets import fetch_20newsgroups
twenty_train = fetch_20newsgroups(subset='train', shuffle=True)
from gensim.sklearn_api import TfIdfTransformer
from sklearn.feature_extraction.text import CountVectorizer
cv = CountVectorizer(max_features=2000)
X_train_counts = count_vect.fit_transform(twenty_train.data)
model = TfIdfTransformer(smartirs='atn')
tfidf_aug = model.fit_transform([[(i,j) for i,j in zip(a.data,a.indices)] for a in X_train_counts ])
关于python - 20newsgroup 数据集上的增强频率。TypeError : 'int' object is not iterable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53821303/