20newsgroup dataset.TypeError: 'int' object is not iterable 上的增强频率

Posted

技术标签:

【中文标题】20newsgroup dataset.TypeError: \'int\' object is not iterable 上的增强频率【英文标题】:Augmented Frequency on 20newsgroup dataset.TypeError: 'int' object is not iterable20newsgroup dataset.TypeError: 'int' object is not iterable 上的增强频率 【发布时间】:2019-05-18 04:17:33 【问题描述】:

我正在使用 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: sparse matrix length is ambiguous; use getnnz() or shape[0]

像这样在最后使用 getnz() 之后。

tfidf_aug = model.fit_transform(X_train_counts().getnnz())

我收到此错误:

TypeError: 'int' object is not iterable

【问题讨论】:

【参考方案1】:

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 ])

【讨论】:

以上是关于20newsgroup dataset.TypeError: 'int' object is not iterable 上的增强频率的主要内容,如果未能解决你的问题,请参考以下文章

python 20newsgroups_benchmark.py

数据挖掘任务4:20Newsgroups聚类

文本分类,聚类数据源--webkb 20newsGroup R8

20newsgroup dataset.TypeError: 'int' object is not iterable 上的增强频率

机器学习:如何解决fetch_20newsgroups下载速度巨慢的问题?

小酌一下:Win10 解决fetch_20newsgroups下载速度巨慢