gpt4 book ai didi

python - Scikit-learn SelectFromModel——实际获取底层预测变量的特征重要性分数

转载 作者:太空宇宙 更新时间:2023-11-04 02:45:09 25 4
gpt4 key购买 nike

我正在尝试估计手头分类任务的特征重要性。对我来说重要的是获得代表每个特征重要性的具体数字,而不仅仅是“选择最重要的 X 个特征”。

显而易见的选择是使用基于树的方法,它提供了很好的 feature_importances_ 方法来获取每个特征的重要性。但我对基于树的分类器的结果并不满意。我了解到 SelectFromModel 方法能够根据重要性得分消除不重要的特征,并且对 SVM 或线性模型也能成功做到这一点。

我想知道,有没有什么方法可以从 SelectFromModel 中获取每个特征的特定重要性分数,而不是仅仅获取最重要特征的列表?

最佳答案

查看 GitHub source code ,我找到了这段代码:

def _get_feature_importances(estimator):
"""Retrieve or aggregate feature importances from estimator"""
importances = getattr(estimator, "feature_importances_", None)

if importances is None and hasattr(estimator, "coef_"):
if estimator.coef_.ndim == 1:
importances = np.abs(estimator.coef_)

else:
importances = np.sum(np.abs(estimator.coef_), axis=0)

elif importances is None:
raise ValueError(
"The underlying estimator %s has no `coef_` or "
"`feature_importances_` attribute. Either pass a fitted estimator"
" to SelectFromModel or call fit before calling transform."
% estimator.__class__.__name__)

return importances

因此,如果您使用的是线性模型,则代码只是使用模型系数作为“重要性分数”。

您可以通过从传递给 SelectFromModel 的估算器中提取 coef_ 属性来做到这一点。

例子:

sfm = SelectFromModel(LassoCV(), 0.25)
sfm.fit(X, y)
print(sfm.estimator_.coef_) # print "importance" scores

关于python - Scikit-learn SelectFromModel——实际获取底层预测变量的特征重要性分数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45330240/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com