Ожидаемый 2D-массив при попытке предсказать новые предложения

#python #numpy #scikit-learn #logistic-regression

#python #numpy #scikit-learn #логистическая регрессия

Вопрос:

После того, как я построил модель, я хотел бы теперь проверить результаты с новыми данными. Я использовал следующее

 count_vectorizer = CountVectorizer()

X_train= np.asarray(X_train)
y_train= np.asarray(y_train)
X_test = np.asarray(X_test)

score_log = clf.fit(X_train, y_train).predict(['Hello World'])
 

использование модели логистической регрессии.

К сожалению, у меня

 ValueError: Expected 2D array, got 1D array instead:
array=['Hello World'].
Reshape your data either using array.reshape(-1, 1) if your data has a single feature or array.reshape(1, -1) if it contains a single sample.
 

Когда я попытался использовать

 top=['Hello World'].reshape(-1,1)
 

и ['Hello World'].to_numpy().reshape(-1,1)

Я получил эту новую ошибку:

 AttributeError: 'list' object has no attribute 'reshape'
 

Не могли бы вы объяснить мне, как проверять новые предложения в моей модели?

Ответ №1:

Похоже, вы используете неправильный способ генерации прогноза. Обычно вам нужно будет встроить 'Hello World' в 2D векторное пространство с помощью определенного преобразователя. Пример выглядит следующим образом:

 # transform text to vector
corpus = ['Hello World']
vectorizer = CountVectorizer()
X = vectorizer.fit_transform(corpus)
word_vectors = X.toarray()

# Apply your prediction model with word_vectors below
## CODE
 

Для получения дополнительной информации о CountVectorizer вы можете прочитать на https://scikit-learn.org/stable/modules/generated/sklearn.feature_extraction.text .CountVectorizer.html

Для получения дополнительной информации обо всем конвейере вы можете прочитать по адресу https://www.kaggle.com/catris25/logistic-regression-with-countvectorizer