python - 20newsgroup 数据集上的增强频率。TypeError : 'int' object is not iterable

标签 python scikit-learn nlp gensim

我正在使用 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/

相关文章:

python - 如何将 csv 日期时间字符串保存到 Django 模型字段中

python - "pipenv install tensorflow"卡在 "Locking..."

python - 如何反转标签的 One-Hot Encoding 以评估 ML/DL 模型?

optimization - 写入 Lucene.Net 索引时内存使用量不断增长

c# - Stanford CoreNLP 创建 edu.stanford.nlp.time.TimeExpressionExtractorImpl 时出错

Python Argparse - 基于另一个参数的值的有条件必需的参数

python - Python 中字符串的基数排序

machine-learning - 导入错误: DLL load failed: The specified procedure could not be found

python - 解释 Scikit-Learn 模型输出,额外的树分类器不同的措施

machine-learning - 如何在weka中使用svm(smo)的字符串数据