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
文本分类,聚类数据源--webkb 20newsGroup R8
20newsgroup dataset.TypeError: 'int' object is not iterable 上的增强频率