загрузить файлы рассола с al oop и поместить весь вывод в функцию - PullRequest
0 голосов
/ 21 июня 2020

У меня есть функция с именем 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

1 Ответ

0 голосов
/ 21 июня 2020

Предполагая, что вы пытаетесь загрузить обученный файл солений и создать экземпляр класса VoteClassifier, это можно сделать следующим образом:

models = [MultinomialNB, BernoulliNB, LogisticRegression, SGDClassifier, SVC, LinearSVC]

# Load Models
unpickeled_models = []
for model in models:
    ''' use after the model is pickled '''
    classifier_f = open("{0}.pickle".format(model),"rb")
    unpickeled_models.append(pickle.load(classifier_f))
    classifier_f.close()
    
    print(str(model) + " classifier accuracy percent: ", (nltk.classify.accuracy(classifier, testing_set))*100)

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

    def accuracy(self, testing_set):
        for classifier in self._classifiers:
            print("classifier accuracy percent: ", (nltk.classify.accuracy(classifier, testing_set))*100)

vote_classifier = VoteClassifier(unpickeled_models)
vote_classifier.accuracy(testing_set)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...