2 python machine-learning scikit-learn
当我看一下带有交叉验证的递归特征消除时,我想知道sklearn.feature_selection.RFECV()的实际用途是什么。
实际上,它只是为我提供了最佳数量的功能,但没有告诉我这些功能的任何信息。
与此相反,sklearn.feature_selection.RFE给了我rfe.ranking_
我不应该只使用它sklearn.feature_selection.RFE
吗?
还是我忽略了什么?
这两个功能背后的核心思想是相同的,即递归消除比另一个功能重要性低的功能。区别在于这两种方法是如何实现这一目标的。
sklearn.feature_selection.RFE只需训练一个将权重分配给要素的估计器。它根据该估计量得出特征的重要性,然后递归地对其进行修剪。
另一方面,通过交叉验证消除递归特征,将交叉验证添加到混合中。特征重要性得分的计算仅基于验证数据进行。根据数据的大小和使用的估算器,这可能是一个更耗资源的过程。
正如@Jan K所提到的,您可以使用ranking_
属性获得功能排名
根据文档
support_:形状数组[n_features]
Run Code Online (Sandbox Code Playgroud)The mask of selected features.
这将返回选定功能的布尔掩码,例如
array([ True, True, True, True, True,
False, False, False, False, False], dtype=bool)
Run Code Online (Sandbox Code Playgroud)
rank_:形状数组[n_features]
特征等级,使得ranking_ [i]对应于第i个特征的等级位置。选定的(即最佳估计)功能被分配为等级1。
例如(来自官方文档示例)
selector.ranking_
#output : array([1, 1, 1, 1, 1, 6, 4, 3, 2, 5])
Run Code Online (Sandbox Code Playgroud)
其中选择器是RFECV()对象
提价