从 MulinomialNB 中提取对数概率

问题描述 投票:0回答:2

我有一个由特征提取器组成的 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_”

python scikit-learn naivebayes
2个回答
2
投票

根据文档

estimators_
是访问VotingClassifier
fitted
子估计器列表的正确属性。因此,您的代码应如下所示:

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

您使用

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


0
投票

AttributeError Traceback(最近一次调用最后一次) [55]第 9 行的单元格 6:训练多项式朴素贝叶斯分类器 8 mnb = MultinomialNB(alpha=0.8, fit_prior=True, force_alpha=True) ----> 9 mnb.fix(x_train_vec, y_train) 11:训练高斯朴素贝叶斯分类器 12 gnb = GaussianNB()

AttributeError:“MultinomialNB”对象没有属性“fix”

单击添加单元格。

我正在尝试训练多项朴素贝叶斯模型,但出现此错误。请需要帮助。

© www.soinside.com 2019 - 2024. All rights reserved.