从GridSearchCV获取特征重要性

17
从sklearn的GridSearchCV中获取特征重要性的方法是什么?
例如:
from sklearn.model_selection import GridSearchCV
print("starting grid search ......")
optimized_GBM = GridSearchCV(LGBMRegressor(),
                             params,
                             cv=3,
                             n_jobs=-1)
# 
optimized_GBM.fit(tr, yvar)
preds2 = optimized_GBM.predict(te)

有没有一种方式可以访问特征重要性?

也许像这样

optimized_GBM.feature_importances_
3个回答

34

这个有效

optimized_GBM.best_estimator_.feature_importances_

16
另外提示:如果您正在使用管道(pipeline),也就是您的估算器(estimator)是一个管道对象,您需要添加管道步骤的名称:optimized_GBM.best_estimator_.named_steps["step_name"].feature_importances_ - 00schneider
3
是否有办法提取特征名称?即变量的名称? - Jeremy K.
@00schneider 如果我在管道中进行PCA,然后拟合模型,如何恢复模型中原始变量的重要性。 - BND

21

明白了。大致就是这样:

optimized_GBM.best_estimator_.feature_importance()

如果你运行了一个Pipeline,并收到了object has no attribute 'feature_importance'的错误提示,请尝试使用optimized_GBM.best_estimator_.named_steps["step_name"].feature_importances_

这里的step_name是你的pipeline中相应的名称。


4
你是否遇到了object has no attribute 'feature_importance'的错误? - limitless
1
不,我没有遇到任何错误。这对我起作用了。我使用的是Python 3.6。然而,这是在一月份,所以函数调用可能已经改变,正如其他答案所建议的那样。 - Nick M

2

这取决于您选择的模型。如果您选择了SVM,那么您将不会有特征重要性参数,但在决策树中,您将获得它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接