在我的一个项目中,我正在比较多棵决策树,使用scikit-learn的回归算法(随机森林、极端随机树、Adaboost和装袋法)。为了比较和解释这些算法,我使用了特征重要性,但对于装袋决策树似乎无法获得这一信息。
我的问题是:有谁知道如何获取装袋法的特征重要性列表?
问候,Kornee
回答:
您说的是BaggingClassifier吗?它可以与许多基础估计器一起使用,因此没有实现特征重要性。有一些与模型无关的计算特征重要性的方法(例如请参阅 https://github.com/scikit-learn/scikit-learn/issues/8898),但scikit-learn并未使用这些方法。
如果使用决策树作为基础估计器,您可以自己计算特征重要性:这只需计算bagging.estimators_
中所有树的tree.feature_importances_
的平均值即可:
import numpy as np
from sklearn.ensemble import BaggingClassifier
from sklearn.tree import DecisionTreeClassifier
from sklearn.datasets import load_iris
X, y = load_iris(return_X_y=True)
clf = BaggingClassifier(DecisionTreeClassifier())
clf.fit(X, y)
feature_importances = np.mean([
tree.feature_importances_ for tree in clf.estimators_], axis=0)
RandomForestClassifier内部执行相同的计算。