从 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_'
根据 documentation,estimators_
是访问 VotingClassifier
的 fitted 子估计器列表的正确属性。因此,您的代码应如下所示:
nb = vclf.named_steps['clf'].estimators_[0]
print(nb.feature_log_prob_)
您使用 estimators
访问的 MulinomialNB
未安装,因此未提供 feature_log_prob_
属性。这就是错误的来源。
我有一个由特征提取器组成的 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_'
根据 documentation,estimators_
是访问 VotingClassifier
的 fitted 子估计器列表的正确属性。因此,您的代码应如下所示:
nb = vclf.named_steps['clf'].estimators_[0]
print(nb.feature_log_prob_)
您使用 estimators
访问的 MulinomialNB
未安装,因此未提供 feature_log_prob_
属性。这就是错误的来源。