我在为整个数据集训练分类器时遇到内存错误,因此我将数据集分成小部分,并为每个部分训练一个单独的分类器对象。在
为了测试,我需要这些单独的分类器对象的组合。那我该怎么做呢。我可以将这些对象存储在pickle文件中,但是它们仍然是单独的对象。在
我正在使用NLTK。在
代码:
documents = [(list(movie_reviews.words(fileid)), category)
for category in movie_reviews.categories()
for fileid in movie_reviews.fileids(category)]
all_words = []
for w in movie_reviews.words():
all_words.append(w.lower())
all_words = nltk.FreqDist(all_words)
word_features = list(all_words.keys())[:3000]
def find_features(document):
words = set(document)
features = {}
for w in word_features:
features[w] = (w in words)
return features
#print((find_features(movie_reviews.words('neg/cv000_29416.txt'))))
featuresets = [(find_features(rev), category) for (rev, category) in documents]
numtrain = int(len(documents) * 90 / 100)
training_set = featuresets[:numtrain]
testing_set = featuresets[numtrain:]
classifier = nltk.NaiveBayesClassifier.train(training_set)
分类器需要在整个数据集(代码中的训练集)上进行训练,以便您能够进行正确的预测和测试(在测试集上),因为用数据集的一部分训练多个分类器是行不通的,或者至少这不是最佳解决方案。我建议以下几点:
如果1和2不起作用,并且希望将多个分类器对象组合为一个(但仅当涉及到它们的预测时),您可以尝试集成方法,但我真的相信这是除了您正在尝试做的之外,并不能解决您所面临的问题。在任何情况下,下面是一个MaxVote分类器的示例: https://bitbucket.org/roadrunner_team/large-scale-sentiment-analysis/src/a06d51ef42325293f0296270ca975341c847ab9f/SentimentAnalysis/FigurativeTextAnalysis/models/Classifier_.py?at=master&fileviewer=file-view-default
相关问题 更多 >
编程相关推荐