我有一个由特征提取器组成的 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_”
根据文档,
estimators_
是访问VotingClassifier
的fitted子估计器列表的正确属性。因此,您的代码应如下所示:
nb = vclf.named_steps['clf'].estimators_[0]
print(nb.feature_log_prob_)
您使用
MulinomialNB
访问的 estimators
未安装,因此未提供 feature_log_prob_
属性。这就是错误的来源。
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”
单击添加单元格。
我正在尝试训练多项朴素贝叶斯模型,但出现此错误。请需要帮助。