Извлечь логарифмические вероятности из MulinomialNB - PullRequest
0 голосов
/ 19 июня 2020

У меня есть scikit-learn Pipeline, состоящий из экстрактора функций, и VotingClassifier, который содержит MulinomialNB и некоторые другие модели. Когда я тренирую MulinomialNB отдельно, я могу извлечь вероятности журнала, используя nb.feature_log_prob_, но внутри конвейера этот атрибут отсутствует.

from sklearn.feature_extraction.text import CountVectorizer
from sklearn.naive_bayes import MultinomialNB
from sklearn.ensemble import VotingClassifier
from sklearn.pipeline import Pipeline

vclf =  Pipeline([
    ('vect', CountVectorizer()),
    ('clf', VotingClassifier(
        estimators=[
            ('nb', MultinomialNB()),
            [...]
        ]
    ))
])
vclf.fit(train_X, train_y)

nb = vclf.named_steps['clf'].estimators[0][1]
nb.feature_log_prob_ 

AttributeError: объект 'MultinomialNB' не имеет атрибута 'feature_log_prob_ '

1 Ответ

1 голос
/ 19 июня 2020

Согласно документации , estimators_ является правильным атрибутом для доступа к списку подогнанных вспомогательных оценок VotingClassifier. Таким образом, ваш код должен выглядеть следующим образом:

nb = vclf.named_steps['clf'].estimators_[0]
print(nb.feature_log_prob_)

MulinomialNB, к которому вы обращались с помощью estimators, не соответствовал и, следовательно, не предоставлял атрибут feature_log_prob_. Вот откуда взялась ошибка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...