sklearn.feature_selection.RFE

class sklearn.feature_selection.RFE(estimator, *, n_features_to_select=None, step=1, verbose=0)

[源码]

具有递归特征消除的特征排序。

给定将权重分配给特征(例如线性模型的系数)的外部估计器,递归特征消除(RFE)的目标是通过递归考虑越来越少的特征集来选择特征。首先,对估计器进行初始特征集训练,并通过coef_属性或 feature_importances_属性获得每个特征的重要性。然后,从当前特征集中删除最不重要的特征。在经过修剪的集合上递归地重复这个过程,直到达到需要选择的特征数量。

用户指南中阅读更多内容。

参数 说明
estimator object
一种监督学习估计器,其fit方法通过coef_ 属性或feature_importances_属性提供有关特征重要性的信息。
n_features_to_select int or None (default=None)
要选择的特征数量。如果为None,则选择一半特征。
step int or float, optional (default=1)
如果大于或等于1,则step对应于每次迭代要删除的特征个数(整数)。如果在(0.0,1.0)之内,则step对应于每次迭代要删除的特征的百分比(向下舍入)。
verbose int, (default=0)
控制输出的详细程度。
属性 说明
n_features_ int
所选特征的数量。
support_ array of shape [n_features]
所选特征的掩码。
ranking_ array of shape [n_features]
特征排序,使ranking_[i]对应第i个特征的排序位置。选择的(即估计的最佳)特征被排在第1位。
estimator_ object
拟合简化后数据集的外部估算器。

另见

RFECV

通过内置的交叉验证选择最佳数量的特征来消除递归特征

如果基础估算器也可以输入,则允许NaN / Inf。

参考

1 Guyon, I., Weston, J., Barnhill, S., & Vapnik, V., “Gene selection for cancer classification using support vector machines”, Mach. Learn., 46(1-3), 389–422, 2002.

示例

以下示例显示如何在Friedman#1数据集中检索5个最有用的特征。

>>> from sklearn.datasets import make_friedman1
>>> from sklearn.feature_selection import RFE
>>> from sklearn.svm import SVR
>>> X, y = make_friedman1(n_samples=50, n_features=10, random_state=0)
>>> estimator = SVR(kernel="linear")
>>> selector = RFE(estimator, n_features_to_select=5, step=1)
>>> selector = selector.fit(X, y)
>>> selector.support_
array([ True,  True,  True,  True,  TrueFalseFalseFalseFalse,
       False])
>>> selector.ranking_
array([1111164325])

方法

方法 说明
decision_function(X) 计算X的决策函数。
fit(X, y) 对所选特征拟合RFE模型和底层估计器。
fit_transform(X[, y]) 拟合数据并对其进行转换。
get_params([deep]) 获取此估计器的参数。
get_support([indices]) 获取所选特征的掩码或整数索引。
inverse_transform(X) 反向转换操作
predict(X) 将X简化为选定的特征,然后使用基估计器进行预测。
predict_log_proba(X) 预测X的类对数概率。
predict_proba(X) 预测X的类概率。
score(X, y) 将X简化为选择的特征,然后返回基估计器的分数。
set_params(**params) 设置此估算器的参数。
transform(X) 将X缩小为选定的特征。
__init__(estimator, *, n_features_to_select=None, step=1, verbose=0)

[源码]

初始化self,参见help(type(self))获取更多信息。

decision_function(X)

[源码]

计算X的决策函数。

参数 说明
X {array-like or sparse matrix} of shape (n_samples, n_features)
输入样本。在内部,如果将稀疏矩阵提供给 csr_matrix,它将转换为 dtype=np.float32
返回值 说明
score array, shape = [n_samples, n_classes] or [n_samples]
输入样本的决策函数。类的顺序与属性classes_中的顺序相对应。回归和二分类产生一个形状为[n_samples]的数组。
fit(X, y)

[源码]

对所选特征拟合RFE模型和底层估计器。

参数 说明
X array-like of shape (n_samples, n_features)
训练输入样本。
y array-like of shape (n_samples,)
目标值。
返回值 说明
self object
fit_transform(X, y=None, **fit_params)

[源码]

拟合数据,然后对其进行转换。

使用可选参数fit_params将转换器拟合到X和y,并返回X的转换值。

参数 说明
X {array-like, sparse matrix, dataframe} of shape (n_samples, n_features)
y ndarray of shape (n_samples,), default=None
目标值
**fit_params dict
其他拟合参数。
返回值 说明
X_new ndarray array of shape (n_samples, n_features_new)
转换后的数组。
get_params(deep=True)

[源码]

获取此估计器的参数。

参数 说明
deep bool, default=True
如果为True,则将返回此估算器和所包含子对象的参数。
返回值 说明
params mapping of string to any
参数名称映射到其值。
get_support(indices=False)

[源码]

获取所选特征的掩码或整数索引。

参数 说明
indices boolean (default False)
如果为True,则返回值将是一个整数数组,而不是布尔掩码。
返回值 说明
support array
从特征向量中选择保留特征的索引。如果indices为False,则为形状为[#输入特征]的布尔数组,其中元素为True时(如果已选择其对应的特征进行保留)。如果indices为True,则这是一个形状为[#输出特征]的整数数组,其值是输入特征向量的索引。
inverse_transform(X)

[源码]

反向转换操作。

参数 说明
X array of shape [n_samples, n_selected_features]
输入样本。
返回值 说明
X_r array of shape [n_samples, n_original_features]
X中插入的列名为零的特征将被transform删除。
predict(X)

[源码]

将X简化为选定的特征,然后使用基估计器进行预测。

参数 说明
X array of shape [n_samples, n_features]
输入样本。
返回值 说明
y array of shape [n_samples]
预测目标值。
predict_log_proba(X )

[源码]

预测X的类对数概率。

参数 说明
X array of shape [n_samples, n_features]
输入样本。
返回值 说明
y array of shape [n_samples]
输入样本的类对数概率。类的顺序与属性classes_中的顺序相对应。
predict_proba(X )

[源码]

参数 说明
X {array-like or sparse matrix} of shape (n_samples, n_features)
输入样本。在内部,如果将稀疏矩阵提供给csr_matrix,它将转换为 dtype=np.float32
返回值 说明
p array of shape (n_samples, n_classes)
输入样本的分类概率。类的顺序与属性classes_中的顺序相对应。
score(X,y )

将X简化为选择的特征,然后返回基估计器的分数。

参数 说明
X array of shape [n_samples, n_features]
输入样本。
y array of shape [n_samples]
目标值。
set_params(**params)

[源码]

设置此估算器的参数。

该方法适用于简单的估计器以及嵌套对象(例如管道)。后者具有<component>__<parameter>形式的参数, 以便可以更新嵌套对象的每个组件。

参数 说明
**params dict
估计器参数。
返回值 说明
self object
估计器实例。
transform(X)

[源码]

将X缩小为选定的特征。

参数 说明
X array of shape [n_samples, n_features]
输入样本。
返回值 说明
X_r array of shape [n_samples, n_selected_features]
仅具有所选特征的输入样本。

sklearn.feature_selection.RFE使用示例