Я пытаюсь использовать классификатор GradientBoosting. Я изменил свой обучающий data(X_train) на разреженную матрицу с помощью Tfidf. Прошил через GradientBoostingClassifier.fit. Работает нормально. Когда я пытаюсь применить модель к своим тестовым данным.
Выдает ошибку, говоря
"A sparse matrix was passed, but dense data is required. Use X.toarray() to convert to a dense numpy array."
Я тоже использовал X_test.toarray(), но дает memory error. Есть ли способ обойти это?
Я использую конвейер, как показано ниже
text_clf_1 = Pipeline([('vect', CountVectorizer(stop_words=STOPWORDS,
ngram_range=(1,2))),('tfidf',TfidfTransformer()), 'clf',
GradientBoostingClassifier(verbose=100,n_estimators=100))])
Модель обучения: отлично работает
text_clf = text_clf_1.fit(X_train, y_train)
Пока тестирование дает указанную выше ошибку:
text_clf_1predicted = text_clf.predict(X_test)
Error : "A sparse matrix was passed, but dense data is required. Use X.toarray() to convert to a dense numpy array."
Я видел, что по этому поводу поднимался один вопрос, но когда я попробовал "X_test.toarray ()", он выдает ошибку
AttributeError: 'list' object has no attribute 'toarray'
Добавление .toarray () в мой тестовый набор данных дает следующую ошибку: AttributeError: объект 'list' не имеет атрибута 'toarray'
затем вы должны ввести тип (Xtrain) и тип (X_test) и посмотреть, относятся ли они к одному типу, насколько я помню, GBOOST не использует список в качестве входных данных, вероятно, на y_train
Я конвертирую X_train и X_test в разреженную матрицу через Tfidf, упомянутый в конвейере, затем он проходит через Gradientboostingclassifier. Модуль Tye .fit принимает разреженную матрицу, но функция .predict не принимает разреженную матрицу.
Я не уверен, что не так, но ради тестирования, можете ли вы использовать последние 10 записей из Xtrain и посмотреть в прогнозировании text_clf.predict (X_train [10,20]), если он работает, вы можете быть уверены, что проблема в с преобразованием X_test
После ввода этого кода: запускается ошибка: TypeError: передана разреженная матрица, но требуются плотные данные. Используйте X.toarray () для преобразования в плотный массив numpy.
существует проблема с .predict. Как преобразовать разреженную матрицу в плотный массив numpy. Поскольку .toarray () не работает со списком, и мои данные находятся в формате списка. Я также пробовал .todense (), что дает ошибку памяти
думаю, наверное, это будет X_test.data (), вот интересная документация по работе с sparse_matrix mbatchkarov.github.io/2014/10/10/rate_of_vocab_growth
X_test.data () не работает. Есть два способа преобразовать разреженную матрицу в плотную матрицу с помощью .toarray () и .todense (). Оба выдают ошибку памяти.






при ошибке памяти, можете ли вы попробовать несколько примеров и увидеть, text_clf_1predicted = text_clf.predict (X_test [: 10] .toarray ())