Увеличенная частота для набора данных 20newsgroup. TypeError: объект 'int' не повторяется - PullRequest
0 голосов
/ 17 декабря 2018

Я работаю над набором данных 20newsgroup, используя Python.После использования CountVectorizer на нем, а затем с помощью API Gensim для увеличения частоты термин.Я попытался установить его, но получаю эту ошибку.

Вот мой код:

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 Ответ

0 голосов
/ 19 января 2019

Входные данные для TfidfTransformer должны быть итератором (int, int), как указано здесь .Следовательно, вы должны обработать разреженную матрицу, прежде чем ее можно вычислить.

Попробуйте это

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