从 GridSearchCV 获取特征重要性

Posted

技术标签:

【中文标题】从 GridSearchCV 获取特征重要性【英文标题】:Get feature importance from GridSearchCV 【发布时间】:2018-06-30 19:56:57 【问题描述】:

有没有办法从 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_

【问题讨论】:

【参考方案1】:

这个有效

optimized_GBM.best_estimator_.feature_importances_

【讨论】:

另外:如果您使用的是管道,.i.e.您的估算器是一个管道对象,您必须添加管道步骤名称:optimized_GBM.best_estimator_.named_steps["step_name"].feature_importances_ @aptha-gowda 有没有办法同时提取特征名称?即变量的名称? @00schneider 如果我做 PCA 然后在我的管道中拟合一个模型,我如何恢复模型中原始变量的重要性。【参考方案2】:

知道了。它是这样的:

optimized_GBM.best_estimator_.feature_importance()

如果你碰巧通过管道运行它并收到object has no attribute 'feature_importance' 试试 optimize_GBM.best_estimator_.named_steps["step_name"].feature_importances_

其中step_name 是您管道中的对应名称

【讨论】:

您是否遇到了object has no attribute 'feature_importance' 错误? 不,我没有收到任何错误。这对我有用。我使用的是python 3.6。但是,这是在一月份,因此函数调用可能已按照其他答案的建议进行了更改。【参考方案3】:

这取决于您选择的型号。如果您选择 SVM,您将没有特征重要性参数,但在决策树中您会得到它

【讨论】:

以上是关于从 GridSearchCV 获取特征重要性的主要内容,如果未能解决你的问题,请参考以下文章

如何从 GridsearchCV 获取 feature_importances_

从 gridsearchCV 中的 RFECV 检索选定的特征

如何在 python 中的 sklearn 中获取 GridSearchCV 中的选定功能

当我使用管道对线性 svc 进行预处理、训练和测试时,如何获得最重要的特征系数?

使用 SGD 分类器和 GridsearchCV 寻找***特征

pyspark randomForest 特征重要性:如何从列号中获取列名