从 MulinomialNB 中提取对数概率

Extract log probabilities from MulinomialNB

我有一个由特征提取器组成的 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' object has no attribute 'feature_log_prob_'

根据 documentationestimators_ 是访问 VotingClassifierfitted 子估计器列表的正确属性。因此,您的代码应如下所示:

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

您使用 estimators 访问的 MulinomialNB 未安装,因此未提供 feature_log_prob_ 属性。这就是错误的来源。