У меня есть функция с именем VoteClassifier
, в которую я хочу поместить весь вывод из l oop открытия файлов рассола. В настоящее время понимание списка в функции снова обучает модель, что неэффективно. Есть ли способ запустить его с выходом рассола classifier
? Любой вклад будет оценен.
models = MultinomialNB, BernoulliNB, LogisticRegression, SGDClassifier, SVC, LinearSVC
for model in models:
''' use after the model is pickled '''
classifier_f = open("{0}.pickle".format(model),"rb")
classifier = pickle.load(classifier_f)
classifier_f.close()
print(str(model) + " classifier accuracy percent: ", (nltk.classify.accuracy(classifier, testing_set))*100)
voted_classifier = VoteClassifier([SklearnClassifier(model()).train(training_set) for model in models])
print("voted classifier accuracy pct:", (nltk.classify.accuracy(voted_classifier, testing_set))*100)
РЕДАКТИРОВАТЬ: ошибка в последней строке:
Traceback (most recent call last):
File "model.py", line 148, in <module>
print("voted classifier accuracy pct:", (nltk.classify.accuracy(voted_classifier, testing_set))*100)
File "/Users/delalma/Library/Python/3.7/lib/python/site-packages/nltk/classify/util.py", line 91, in accuracy
results = classifier.classify_many([fs for (fs, l) in gold])
File "/Users/delalma/Library/Python/3.7/lib/python/site-packages/nltk/classify/api.py", line 79, in classify_many
return [self.classify(fs) for fs in featuresets]
File "/Users/delalma/Library/Python/3.7/lib/python/site-packages/nltk/classify/api.py", line 79, in <listcomp>
return [self.classify(fs) for fs in featuresets]
File "model.py", line 45, in classify
v = c.classify(features)
AttributeError: 'list' object has no attribute 'classify'
Класс классификатора голосов:
class VoteClassifier(ClassifierI):
def __init__(self, *classifiers):
self._classifiers = classifiers
def classify(self, features):
votes = []
for c in self._classifiers:
v = c.classify(features)
votes.append(v)
return mode(votes)
def confidence(self, features):
votes = []
for c in self._classifiers:
v = c.classify(features)
votes.append(v)
choice_votes = votes.count(mode(votes))
conf = choice_votes / len(votes)
return conf