В настоящее время я работаю над программой анализа настроений наивного Байеса, но я не совсем уверен, как определить ее точность. Мой код:
x = df["Text"]
y = df["Mood"]
test_size = 1785
x_train = x[:-test_size]
y_train = y[:-test_size]
x_test = x[-test_size:]
y_test = y[-test_size:]
count_vect = CountVectorizer()
X_train_counts = count_vect.fit_transform(x_train)
tfidf_transformer = TfidfTransformer()
X_train_tfidf = tfidf_transformer.fit_transform(X_train_counts)
clf = MultinomialNB().fit(X_train_tfidf, y_train)
print(clf.predict(count_vect.transform(["Random text"])))
Прогноз отлично работает для предложения, которое я ему даю, однако я хочу запустить его на 20% из моей базы данных (x_test и y_test) и рассчитать точность. Я не совсем уверен, как подойти к этому. Любая помощь будет оценена по достоинству.
Я также пробовал следующее:
predictions = clf.predict(x_test)
print(accuracy_score(y_test, predictions))
Что дает мне следующую ошибку:
ValueError: could not convert string to float: "A sentence from the dataset"
прежде чем использовать прогнозы = clf.predict(x_test), пожалуйста, преобразуйте тестовый набор также в числовой
x_test = count_vect.transform(x_test).toarray()
вы можете найти шаг за шагом, чтобы сделать это [здесь]
если вы используете функцию precision_score, чтобы узнать точность, а ожидаемые тестом метки y_test верны, то точность 94% должна быть правильной. Вы можете перекрестно проверить с помощью некоторой выборки и посмотреть, заботитесь ли вы о правильном прогнозе. Пожалуйста, примите ответ также, если это послужит вашему вопросу.
Понял, большое спасибо за помощь.
Спасибо, преобразование в числовое сработало. Можно ли как-то проверить, правильно ли я сделал прогноз? Я получаю точность около 94%, и я не уверен, что это правильно.