У меня есть набор документов, который кластеризуется. Теперь у каждого документа есть ярлык. Я хотел создать на основе этого классификатора, обучить и протестировать его, чтобы он работал нормально и попадал в соответствующий кластер, если я дам новый документ/текст. Поэтому я использовал countVectorizer для преобразования документов в функции. Я знаю, что этот countVectorizer примет уникальные наборы всех слов в наборе документов (более 1000 документов), которые я предоставил. Теперь я делаю классификатор либо KNN OR NavieBayes, и теперь у меня есть новый текстовый файл или документ, который мне нужно преобразовать в функции. Но если я дам один документ для countVectorizer, у меня будет всего несколько слов, и на основе этого все функции будут отличаться от учебных и тестовых документов, что, безусловно, даст результат worng. Как использовать тот же объект countVectorizer для самого документа, который я даю, есть ли какой-либо путь. Прошу вас посоветуйте, какие-либо предложения или способ сделать это ???Как классифицировать один текст с использованием алгоритмов классификатора
def classifierNaviaBayes(self):
count_vectorizer = CountVectorizer(binary='true')
train_documents = count_vectorizer.fit_transform(self.training_documents)
classifier = BernoulliNB().fit(train_documents, self.training_labels)
"Test Phase"
count_worng_prediction = 0
for i in range(0,len(self.test_documents)):
print("The predicted value is ",classifier.predict(count_vectorizer.transform([self.test_documents[i]])))
print("The expected value is ", self.test_labels[i])
predicted_result = classifier.predict(count_vectorizer.transform([self.test_documents[i]]))[0]
expected_result = self.test_labels[i]
if predicted_result != expected_result:
count_worng_prediction +=1
print("The percentage of prediction accuracy is ",(100-(count_worng_prediction/len(self.test_documents))*100))
Я использую тот же countVertorizer для тестовых данных, и, следовательно, приведенный ниже код работает.
хорошо говорят, у меня есть классификатор готов с подготовленными данными. И у меня есть один новый документ, который нужно классифицировать на соответствующий ярлык, должен ли я перейти к тому же count_vertorizer, где я сделал fit_transform? Потому что, когда я создал новый count_vectorizer и назвал преобразование для новых документов, он дал мне и ошибку. # используйте ту же стратегию построения матрицы, что и fit_transform NotFittedError: CountVectorizer - Словарь не установлен. –
Вы должны использовать тот же самый count_vectorizer, который был установлен на данных обучения. – Rubbal