我有一个由特征提取器和一个包含MulinomialNB
和其他模型的VotingClassifier
组成的scikit-learnPipeline
。当我单独训练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_
属性错误:"多项式NB"对象没有属性"feature_log_prob_">
根据文档,estimators_
是访问VotingClassifier
拟合子估计器列表的正确属性。因此,您的代码应如下所示:
nb = vclf.named_steps['clf'].estimators_[0]
print(nb.feature_log_prob_)
您使用estimators
访问的MulinomialNB
未安装,因此未提供feature_log_prob_
属性。这就是错误的来源。