Reshape pandas.Df для использования в GridSearch

Я пытаюсь использовать несколько столбцов функций в GridSearch с Pipeline. Поэтому я передаю два столбца, для которых я хочу использовать TfidfVectorizer, но у меня возникают проблемы при запуске GridSearch.

Xs = training_data.loc[:,['text','path_contents']] y = training_data['class_recoded'].astype('int32') for col in Xs: print Xs[col].shape print Xs.shape print y.shape # (2464L,) # (2464L,) # (2464, 2) # (2464L,) from sklearn.pipeline import Pipeline from sklearn.feature_extraction.text import TfidfVectorizer from sklearn.naive_bayes import MultinomialNB from sklearn.model_selection import GridSearchCV pipeline = Pipeline([('vectorizer', TfidfVectorizer(encoding="cp1252", stop_words="english")), ('nb', MultinomialNB())]) parameters = { 'vectorizer__max_df': (0.48, 0.5, 0.52,), 'vectorizer__max_features': (None, 8500, 9000, 9500), 'vectorizer__ngram_range': ((1, 3), (1, 4), (1, 5)), 'vectorizer__use_idf': (False, True) } if __name__ == "__main__": grid_search = GridSearchCV(pipeline, parameters, n_jobs=-1, verbose=2) grid_search.fit(Xs, y) # <- error thrown here print("Best score: {0}".format(grid_search.best_score_)) print("Best parameters set:") best_parameters = grid_search.best_estimator_.get_params() for param_name in sorted(list(parameters.keys())): print("\t{0}: {1}".format(param_name, best_parameters[param_name])) 

Ошибка: ValueError: найдены входные переменные с непоследовательным числом выборок: [2, 1642]

Я читал аналогичную ошибку здесь и здесь , и я попробовал предложения обоих вопросов, но безрезультатно.

Я попытался выбрать мои данные по-другому:

 features = ['text', 'path_contents'] Xs = training_data[features] 

.values этого я попытался использовать .values как показано здесь :

 grid_search.fit(Xs.values, y.values) 

но это дало мне следующую ошибку:

AttributeError: объект 'numpy.ndarray' не имеет атрибута 'lower'

Так, что происходит? Я не уверен, как продолжить с этого.

One Solution collect form web for “Reshape pandas.Df для использования в GridSearch”

TfidfVectorizer ожидает ввода списка строк. Это объясняет, что объект AttributeError: numpy.ndarray не имеет атрибута «lower», потому что вы вводите 2d-массив, что означает список массивов.

Таким образом, у вас есть 2 варианта: либо concat 2 столбца в 1 столбец заранее (в пандах), либо если вы хотите сохранить 2 столбца, вы можете использовать объединение функций в конвейере ( http://scikit-learn.org/stable/modules/ pipe.html # feature-union )

Что касается первого исключения, я предполагаю, что это вызвано связью между пандами и sklearn. Однако вы не можете точно сказать из-за вышеуказанной ошибки в коде.

  • Ошибка сегментирования случайного лесного классификатора
  • Как создать / настроить собственную функцию счетчика в scikit-learn?
  • Как я узнаю, что раньше я даю научиться sci-kit? (Классификаторы наивных заливов).
  • Получить имя документа в scikit-learn tf-idf matrix
  • Оценка логистической регрессии с перекрестной проверкой
  • Как получить доступ к отдельным прогнозам в Spark RandomForest?
  • scikit-learn - кривая ROC с доверительными интервалами
  • Что делать сначала: выбор параметра или настройка параметров модели?
  • Графическая кривая Precision-Recall при использовании кросс-валидации в scikit-learn
  • как установить максимальный размер кучи для Python
  • Восстановление имен функций explain_variance_ratio_ в PCA с помощью sklearn
  • Python - лучший язык программирования в мире.