RFECV#
- class sklearn.feature_selection.RFECV(estimator, *, step=1, min_features_to_select=1, cv=None, scoring=None, verbose=0, n_jobs=None, importance_getter='auto')#
递归特征消除与交叉验证选择特征。
通过在不同的交叉验证分组(由
cv
参数提供)上拟合一个RFE
选择器,自动调整选择的特征数量。使用scorer
评估不同数量的选定特征的RFE
选择器的性能,并将结果汇总在一起。最后,跨折平均分数,并将选择的特征数量设置为最大化交叉验证分数的特征数量。参见 cross-validation estimator 的词汇条目。更多信息请参阅 User Guide 。
- Parameters:
- estimator :``Estimator`` 实例
一个具有
fit
方法的监督学习估计器,通过coef_
属性或feature_importances_
属性提供特征重要性信息。- stepint 或 float, default=1
如果大于或等于 1,则
step
对应于每次迭代中要移除的特征(整数)数量。 如果在 (0.0, 1.0) 之间,则step
对应于每次迭代中要移除的特征百分比(向下取整)。 注意,为了达到min_features_to_select
,最后一次迭代可能会移除少于step
的特征。- min_features_to_selectint, default=1
要选择的特征的最小数量。即使原始特征数量与
min_features_to_select
之间的差值不能被step
整除,这个数量的特征也会被评分。Added in version 0.20.
- cvint, 交叉验证生成器或可迭代对象, default=None
确定交叉验证分割策略。 cv 的可能输入包括:
None,使用默认的 5 折交叉验证,
整数,指定折数。
一个可迭代对象,生成 (train, test) 索引数组对。
对于整数/None 输入,如果
y
是二分类或多分类,使用StratifiedKFold
。如果估计器是分类器或y
既不是二分类也不是多分类,使用KFold
。参阅 User Guide 了解可以使用的各种交叉验证策略。
Changed in version 0.22:
cv
的默认值 None 从 3 折改为 5 折。- scoringstr, callable 或 None, default=None
一个字符串(参见 scoring_parameter )或 一个具有签名
scorer(estimator, X, y)
的评分器可调用对象/函数。- verboseint, default=0
控制输出的详细程度。
- n_jobsint 或 None, default=None
在跨折拟合时并行运行的核心数量。
None
表示 1,除非在joblib.parallel_backend
上下文中。-1
表示使用所有处理器。参见 Glossary 了解更多细节。Added in version 0.18.
- importance_getterstr 或 callable, default=’auto’
如果为 ‘auto’,则通过估计器的
coef_
或feature_importances_
属性使用特征重要性。还接受指定特征重要性提取的属性名称/路径的字符串。 例如,在
TransformedTargetRegressor
的情况下给出regressor_.coef_
,或在Pipeline
的情况下给出named_steps.clf.feature_importances_
,其最后一步名为clf
。如果为
callable
,则覆盖默认的特征重要性获取器。 可调用对象会传递已拟合的估计器,并应返回每个特征的重要性。Added in version 0.24.
- Attributes:
classes_
ndarray of shape (n_classes,)类标签在
estimator
是分类器时可用。- estimator_ :``Estimator`` 实例
用于选择特征的已拟合估计器。
- cv_results_dict of ndarrays
所有数组(字典的值)按使用的特征数量升序排序(即,数组的第一个元素表示使用最少特征的模型,而最后一个元素表示使用所有可用特征的模型)。 该字典包含以下键:
- split(k)_test_scorendarray of shape (n_subsets_of_features,)
折的交叉验证分数。
- mean_test_scorendarray of shape (n_subsets_of_features,)
跨折的平均分数。
- std_test_scorendarray of shape (n_subsets_of_features,)
跨折分数的标准差。
- n_featuresndarray of shape (n_subsets_of_features,)
每一步使用的特征数量。
Added in version 1.0.
- n_features_int
通过交叉验证选择的特征数量。
- n_features_in_int
在 fit 期间看到的特征数量。仅当基础估计器在拟合时暴露此类属性时定义。
Added in version 0.24.
- feature_names_in_ndarray of shape (
n_features_in_
,) 在 fit 期间看到的特征名称。仅当
X
的特征名称均为字符串时定义。Added in version 1.0.
- ranking_narray of shape (n_features,)
特征排名,使得
ranking_[i]
对应于第 i 个特征的排名位置。 选定的(即估计的最佳)特征被分配排名 1。- support_ndarray of shape (n_features,)
选定特征的掩码。
See also
RFE
递归特征消除。
Notes
cv_results_
中所有值的大小等于ceil((n_features - min_features_to_select) / step) + 1
, 其中 step 是每次迭代中移除的特征数量。如果基础估计器允许,则允许输入中的 NaN/Inf。
References
[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.
Examples
以下示例展示了如何检索 Friedman #1 数据集中先验未知的 5 个信息特征。
>>> from sklearn.datasets import make_friedman1 >>> from sklearn.feature_selection import RFECV >>> from sklearn.svm import SVR >>> X, y = make_friedman1(n_samples=50, n_features=10, random_state=0) >>> estimator = SVR(kernel="linear") >>> selector = RFECV(estimator, step=1, cv=5) >>> selector = selector.fit(X, y) >>> selector.support_ array([ True, True, True, True, True, False, False, False, False, False]) >>> selector.ranking_ array([1, 1, 1, 1, 1, 6, 4, 3, 2, 5])
- property classes_#
类标签在
estimator
是分类器时可用。- Returns:
- 形状为 (n_classes,) 的 ndarray
- decision_function(X)#
计算
X
的决策函数。- Parameters:
- X{array-like 或 sparse matrix},形状为 (n_samples, n_features)
输入样本。内部将转换为
dtype=np.float32
,如果提供稀疏矩阵, 则转换为稀疏的csr_matrix
。
- Returns:
- scorearray,形状为 [n_samples, n_classes] 或 [n_samples]
输入样本的决策函数。类的顺序与属性 classes_ 中的顺序相对应。 回归和二分类产生形状为 [n_samples] 的数组。
- fit(X, y, groups=None)#
拟合RFE模型并自动调整选定的特征数量。
- Parameters:
- X{array-like, sparse matrix},形状为 (n_samples, n_features)
训练向量,其中
n_samples
是样本数量,n_features
是特征总数。- yarray-like,形状为 (n_samples,)
目标值(分类为整数,回归为实数)。
- groupsarray-like,形状为 (n_samples,) 或 None,默认=None
样本的分组标签,用于在将数据集拆分为训练/测试集时使用。 仅在与“Group” cv 实例(例如
GroupKFold
)结合使用时使用。Added in version 0.20.
- Returns:
- selfobject
拟合的估计器。
- fit_transform(X, y=None, **fit_params)#
拟合数据,然后进行转换。
将转换器拟合到
X
和y
,并带有可选参数fit_params
, 并返回X
的转换版本。- Parameters:
- X形状为 (n_samples, n_features) 的类数组
输入样本。
- y形状为 (n_samples,) 或 (n_samples, n_outputs) 的类数组, 默认=None
目标值(无监督转换为 None)。
- **fit_paramsdict
其他拟合参数。
- Returns:
- X_new形状为 (n_samples, n_features_new) 的 ndarray 数组
转换后的数组。
- get_feature_names_out(input_features=None)#
屏蔽根据选定特征的特征名称。
- Parameters:
- input_features字符串的类数组或None, 默认=None
输入特征。
如果
input_features
是None
,则使用feature_names_in_
作为输入特征名称。如果feature_names_in_
未定义,则生成以下输入特征名称:["x0", "x1", ..., "x(n_features_in_ - 1)"]
。如果
input_features
是类数组,则input_features
必须与feature_names_in_
匹配,如果feature_names_in_
已定义。
- Returns:
- feature_names_out字符串对象的ndarray
转换后的特征名称。
- get_metadata_routing()#
Raise
NotImplementedError
.此估计器尚不支持元数据路由。
- get_params(deep=True)#
获取此估计器的参数。
- Parameters:
- deepbool, 默认=True
如果为True,将返回此估计器和包含的子对象(也是估计器)的参数。
- Returns:
- paramsdict
参数名称映射到它们的值。
- get_support(indices=False)#
获取一个掩码或整数索引,用于选择特征。
- Parameters:
- indicesbool, 默认=False
如果为True,返回值将是一个整数数组,而不是一个布尔掩码。
- Returns:
- supportarray
一个从特征向量中选择保留特征的索引。如果
indices
为False,这是一个布尔数组,形状为 [# 输入特征],其中元素为True当且仅当其对应的特征被选择保留。如果indices
为 True,这是一个整数数组,形状为[# 输出特征],其值为输入特征向量的索引。
- inverse_transform(X)#
反转变换操作。
- Parameters:
- X形状为 [n_samples, n_selected_features] 的数组
输入样本。
- Returns:
- X_r形状为 [n_samples, n_original_features] 的数组
X
在特征被transform
方法移除的地方插入零列。
- predict(X)#
将X减少到所选特征并使用估计器进行预测。
- Parameters:
- Xarray of shape [n_samples, n_features]
输入样本。
- Returns:
- yarray of shape [n_samples]
预测的目标值。
- predict_log_proba(X)#
预测X的类别对数概率。
- Parameters:
- X形状为[n_samples, n_features]的数组
输入样本。
- Returns:
- p形状为(n_samples, n_classes)的数组
输入样本的类别对数概率。类别的顺序与属性:term:
classes_
中的顺序相对应。
- predict_proba(X)#
预测X的类别概率。
- Parameters:
- X{array-like 或 sparse matrix},形状为 (n_samples, n_features)
输入样本。内部将转换为
dtype=np.float32
,如果提供稀疏矩阵, 则转换为稀疏的csr_matrix
。
- Returns:
- p形状为 (n_samples, n_classes) 的数组
输入样本的类别概率。类别的顺序对应于属性 classes_ 中的顺序。
- score(X, y, **fit_params)#
将X减少到选定的特征并返回估计器的分数。
- Parameters:
- Xarray of shape [n_samples, n_features]
输入样本。
- yarray of shape [n_samples]
目标值。
- **fit_paramsdict
传递给底层估计器的
score
方法的参数。Added in version 1.0.
- Returns:
- scorefloat
使用
rfe.transform(X)
和y
返回的选定特征计算的底层基估计器的分数。
- set_fit_request(*, groups: bool | None | str = '$UNCHANGED$') RFECV #
Request metadata passed to the
fit
method.Note that this method is only relevant if
enable_metadata_routing=True
(seesklearn.set_config
). Please see User Guide on how the routing mechanism works.The options for each parameter are:
True
: metadata is requested, and passed tofit
if provided. The request is ignored if metadata is not provided.False
: metadata is not requested and the meta-estimator will not pass it tofit
.None
: metadata is not requested, and the meta-estimator will raise an error if the user provides it.str
: metadata should be passed to the meta-estimator with this given alias instead of the original name.
The default (
sklearn.utils.metadata_routing.UNCHANGED
) retains the existing request. This allows you to change the request for some parameters and not others.Added in version 1.3.
Note
This method is only relevant if this estimator is used as a sub-estimator of a meta-estimator, e.g. used inside a
Pipeline
. Otherwise it has no effect.- Parameters:
- groupsstr, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED
Metadata routing for
groups
parameter infit
.
- Returns:
- selfobject
The updated object.
- set_output(*, transform=None)#
设置输出容器。
请参阅 介绍 set_output API 以了解如何使用API的示例。
- Parameters:
- transform{“default”, “pandas”, “polars”}, 默认=None
配置
transform
和fit_transform
的输出。"default"
: 转换器的默认输出格式"pandas"
: DataFrame 输出"polars"
: Polars 输出None
: 转换配置不变
Added in version 1.4:
"polars"
选项已添加。
- Returns:
- self估计器实例
估计器实例。
- set_params(**params)#
设置此估计器的参数。
该方法适用于简单估计器以及嵌套对象(例如
Pipeline
)。后者具有形式为<component>__<parameter>
的参数,以便可以更新嵌套对象的每个组件。- Parameters:
- **paramsdict
估计器参数。
- Returns:
- selfestimator instance
估计器实例。
- transform(X)#
将X 缩减为选定的特征。
- Parameters:
- Xarray of shape [n_samples, n_features]
输入样本。
- Returns:
- X_rarray of shape [n_samples, n_selected_features]
仅包含所选特征的输入样本。