Что я делаю неправильно с использованием scikit-learn
от nltk
, чтобы проверить точность наивного классификатора заливов?Оценка точности прогноза модели NB
...readFile definition not needed
#divide the data into training and testing sets
data = readFile('Data_test/')
training_set = list_nltk[:2000000]
testing_set = list_nltk[2000000:]
#applied Bag of words as a way to select and extract feature
count_vect = CountVectorizer()
X_train_counts = count_vect.fit_transform(training_set.split('\n'))
#apply tfd
tf_transformer = TfidfTransformer(use_idf=False).fit(X_train_counts)
X_train_tf = tf_transformer.transform(X_train_counts)
#Train the data
clf = MultinomialNB().fit(X_train_tf, training_set.split('\n'))
#now test the accuracy of the naive bayes classifier
test_data_features = count_vect.transform(testing_set)
X_new_tfidf = tf_transformer.transform(test_data_features)
predicted = clf.predict(X_new_tfidf)
print "%.3f" % nltk.classify.accuracy(clf, predicted)
Проблема заключается в том, когда я напечатать nltk.classify.accuracy, она принимает навсегда, и я подозревал это, потому что я сделал что-то неправильно, но так как я не получаю ошибку, я не могу понять, что это это неправильно.
Вы уверены, что это вызов метода точности? Что вы пытаетесь предсказать? Попытайтесь добавить какой-нибудь отпечаток, чтобы увидеть, где он остановился. Метод соответствия вашего классификатора кажется странным, он должен быть 'clf.fit (X, Y)' с X (векторизованным) текстом и Y ярлыками вашего набора тренировок. – dooms