Количество столбцов тестовых данных и обучающих данных не совпадает - PullRequest
0 голосов
/ 13 февраля 2019

Я пытаюсь определить, являются ли заголовки новостей реальными или поддельными.

Для этого я использую CountVectorizer, чтобы вычислить, сколько раз каждое слово используется в каждом предложении.

Проблема в том, что количество слов в предложениях не одинаково, поэтому количество столбцов обучающего набора и набора тестов не совпадает.

Поэтому программа не работает во времяфаза тестирования.

# Vectorized All Data
from sklearn.feature_extraction.text import CountVectorizer
vectorizer = CountVectorizer()
X = vectorizer.fit_transform(sentenceInput)

result = pd.DataFrame(data = X.toarray())

Итак, переменная «результат» является зависимыми данными.

# Naive Bayes Prediction
from sklearn.naive_bayes import GaussianNB
nb = GaussianNB()
nb.fit(result,targetInput)

Я учил данные системе через целевую переменную.

Проблеманачинается после этой точки.

# Test Data
X = vectorizer.fit_transform(testList)
print(vectorizer.get_feature_names())
print(X.toarray())

testResult = pd.DataFrame(data = X.toarray())

prediction = nb.predict(testResult)
print(prediction)

Я получаю следующую ошибку, когда хочу напечатать «прогноз» на экране.

ValueError: operands could not be broadcast together with shapes (489,1828) 
(5273,)

Я не уверен, что проблема точночто я говорю.

1 Ответ

0 голосов
/ 13 февраля 2019

CountVectorizer на самом деле все равно, сколько слов в каждом предложении, его вывод - это разреженная матрица, где столбцы - это слова, а строки - предложения, где значения - это количество раз, когда слово появляется вданное предложение, т.е. капуста появляется 3 раза, сумка появляется 0 раз и т. д.

Чтобы ваши данные совпали, вам нужно использовать тот же CountVectorizer вместо переоборудования, что в настоящее время происходит на этапе тестирования (используя.fit_transform())

Измените тестирование на transform, и эта часть проблемы должна исчезнуть.Он будет использовать CountVectorizer, который вы обучили всем данным, и выведет значения в форму, которую вы использовали для создания вашей модели.

# Test Data
X = vectorizer.transform(testList)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...