在scikit-learn
中,LinearSVC和MultinomialNB等分类符会公开coef_
个对象。这允许检查每个标签的模型权重,例如coef_[0]
,coef_[1]
等。show_top10
方法中20_newsgroups documentation显示完整的代码示例。
如果使用OneVsRestClassifier和管道,我编写代码来获取三类分类的包装模型的权重:
pipeline = Pipeline([
('scaler', MaxAbsScaler()),
('clf', OneVsRestClassifier(SVC(kernel='linear', probability=True, class_weight='balanced')))])
pipeline.fit(X_train, y_train)
pipeline.named_steps['clf'].estimators_[0].coef_.toarray()[0]
pipeline.named_steps['clf'].estimators_[1].coef_.toarray()[0]
pipeline.named_steps['clf'].estimators_[2].coef_.toarray()[0]
但是coef_
(对于LinearSVC)和estimators_
(对于包含在OneVsRestClassifier中的SVC)中元素的顺序是如何定义的?
一般来说,我如何可靠地获取i
模型属于哪个类estimators_[i]
?