GradientBoostingClassifier.fit принимает разреженные X, но .predict - нет

Я пытаюсь использовать классификатор 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'

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

Eliethesaiyan 17.05.2018 07:45

Добавление .toarray () в мой тестовый набор данных дает следующую ошибку: AttributeError: объект 'list' не имеет атрибута 'toarray'

Deepti 17.05.2018 10:09

затем вы должны ввести тип (Xtrain) и тип (X_test) и посмотреть, относятся ли они к одному типу, насколько я помню, GBOOST не использует список в качестве входных данных, вероятно, на y_train

Eliethesaiyan 17.05.2018 11:31

Я конвертирую X_train и X_test в разреженную матрицу через Tfidf, упомянутый в конвейере, затем он проходит через Gradientboostingclassifier. Модуль Tye .fit принимает разреженную матрицу, но функция .predict не принимает разреженную матрицу.

Deepti 17.05.2018 11:42

Я не уверен, что не так, но ради тестирования, можете ли вы использовать последние 10 записей из Xtrain и посмотреть в прогнозировании text_clf.predict (X_train [10,20]), если он работает, вы можете быть уверены, что проблема в с преобразованием X_test

Eliethesaiyan 17.05.2018 11:47

После ввода этого кода: запускается ошибка: TypeError: передана разреженная матрица, но требуются плотные данные. Используйте X.toarray () для преобразования в плотный массив numpy.

Deepti 17.05.2018 12:10

существует проблема с .predict. Как преобразовать разреженную матрицу в плотный массив numpy. Поскольку .toarray () не работает со списком, и мои данные находятся в формате списка. Я также пробовал .todense (), что дает ошибку памяти

Deepti 17.05.2018 12:14

думаю, наверное, это будет X_test.data (), вот интересная документация по работе с sparse_matrix mbatchkarov.github.io/2014/10/10/rate_of_vocab_growth

Eliethesaiyan 17.05.2018 12:24

X_test.data () не работает. Есть два способа преобразовать разреженную матрицу в плотную матрицу с помощью .toarray () и .todense (). Оба выдают ошибку памяти.

Deepti 17.05.2018 13:43
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
9
47
0

Другие вопросы по теме