递归特征消除 (RFE)#
- class sklearn.feature_selection.RFE(estimator, *, n_features_to_select=None, step=1, verbose=0, importance_getter='auto')[source]#
- 基于递归特征消除的特征排序。 - 给定一个为特征分配权重的外部估计器(例如,线性模型的系数),递归特征消除 (RFE) 的目标是通过递归地考虑越来越小的特征集来选择特征。首先,估计器在初始特征集上进行训练,并通过任何特定属性或可调用对象获得每个特征的重要性。然后,从当前特征集中修剪掉最不重要的特征。该过程在修剪后的集合上递归重复,直到最终达到所需选择的特征数量。 - 在用户指南中阅读更多内容。 - 参数:
- estimator估计器实例
- 一个监督学习估计器,具有提供关于特征重要性信息的 - fit方法(例如- coef_、- feature_importances_)。
- n_features_to_selectint 或 float,默认为 None
- 要选择的特征数量。如果为 - None,则选择一半的特征。如果为整数,则该参数是要选择的特征的绝对数量。如果为 0 到 1 之间的浮点数,则它是要选择的特征的分数。- 0.24 版本中的变更: 添加了表示分数的浮点值。 
- stepint 或 float,默认为 1
- 如果大于或等于 1,则 - step对应于每次迭代要移除的特征数量(整数)。如果在 (0.0, 1.0) 范围内,则- step对应于每次迭代要移除的特征百分比(向下取整)。
- verboseint,默认为 0
- 控制输出的详细程度。 
- importance_getterstr 或 callable,默认为 'auto'
- 如果为 'auto',则通过估计器的 - coef_或- feature_importances_属性使用特征重要性。- 还接受一个字符串,该字符串指定用于提取特征重要性的属性名称/路径(使用 - attrgetter实现)。例如,在- TransformedTargetRegressor的情况下,给出- regressor_.coef_;在类:- ~sklearn.pipeline.Pipeline的情况下,其最后一步命名为- clf,给出- named_steps.clf.feature_importances_。- 如果为 - callable,则覆盖默认的特征重要性获取器。可调用对象将与拟合的估计器一起传递,它应该返回每个特征的重要性。- 0.24 版本中添加。 
 
- estimator
- 属性:
- classes_形状为 (n_classes,) 的 ndarray
- 当 - estimator为分类器时可用的类别标签。
- estimator_估计器实例
- 用于选择特征的拟合估计器。 
- n_features_int
- 选择的特征数量。 
- n_features_in_int
- 在 拟合期间看到的特征数量。只有当底层估计器在拟合时公开此类属性时才定义。 - 0.24 版本中添加。 
- feature_names_in_形状为 (n_features_in_,) 的 ndarray
- 在 拟合期间看到的特征名称。仅当 - X具有全是字符串的特征名称时定义。- 1.0 版本中添加。 
- ranking_形状为 (n_features,) 的 ndarray
- 特征排名,使得 - ranking_[i]对应于第 i 个特征的排名位置。选择的(即估计最佳的)特征被赋予等级 1。
- support_形状为 (n_features,) 的 ndarray
- 选择的特征掩码。 
 
 - 另请参阅 - RFECV
- 具有内置交叉验证选择的最佳特征数量的递归特征消除。 
- SelectFromModel
- 基于重要性权重阈值的特征选择。 
- SequentialFeatureSelector
- 基于顺序交叉验证的特征选择。不依赖于重要性权重。 
 - 备注 - 如果底层估计器也允许,则允许输入中的 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, True, False, False, False, False, False]) >>> selector.ranking_ array([1, 1, 1, 1, 1, 6, 4, 3, 2, 5]) - property classes_#
- 当 - estimator为分类器时可用的类别标签。- 返回值:
- 形状为 (n_classes,) 的 ndarray
 
 
 - decision_function(X)[source]#
- 计算 - X的决策函数。- 参数:
- X形状为 (n_samples, n_features) 的 {数组或稀疏矩阵}
- 输入样本。在内部,它将被转换为 - dtype=np.float32,如果提供稀疏矩阵,则转换为稀疏- csr_matrix。
 
- 返回值:
- score数组,形状 = [n_samples, n_classes] 或 [n_samples]
- 输入样本的决策函数。类的顺序与属性 classes_ 中的顺序相对应。回归和二元分类产生形状为 [n_samples] 的数组。 
 
 
 - fit(X, y, **fit_params)[source]#
- 拟合RFE模型,然后在选定的特征上拟合底层估计器。 - 参数:
- X形状为 (n_samples, n_features) 的{数组、稀疏矩阵}
- 训练输入样本。 
- y形状为 (n_samples,) 的数组
- 目标值。 
- **fit_params字典
- 如果 - enable_metadata_routing=False(默认):直接传递给底层估计器的- fit方法的参数。
- 如果 - enable_metadata_routing=True:安全地将参数路由到底层估计器的- fit方法。
 - 1.6版本中的变化: 更多详情请参见 元数据路由用户指南。 
 
- 返回值:
- self对象
- 已拟合的估计器。 
 
 
 - fit_transform(X, y=None, **fit_params)[source]#
- 拟合数据,然后转换它。 - 使用可选参数 - fit_params将转换器拟合到- X和- y,并返回- X的转换版本。- 参数:
- X形状为 (n_samples, n_features) 的类数组
- 输入样本。 
- y形状为 (n_samples,) 或 (n_samples, n_outputs) 的类数组,默认为 None
- 目标值(对于无监督转换,为 None)。 
- **fit_params字典
- 附加拟合参数。 
 
- 返回值:
- X_new形状为 (n_samples, n_features_new) 的ndarray 数组
- 转换后的数组。 
 
 
 - get_feature_names_out(input_features=None)[source]#
- 根据选择的特征掩盖特征名称。 - 参数:
- input_features字符串类数组或 None,默认为 None
- 输入特征。 - 如果 - input_features为- None,则使用- feature_names_in_作为输入特征名称。如果- feature_names_in_未定义,则生成以下输入特征名称:- ["x0", "x1", ..., "x(n_features_in_ - 1)"]。
- 如果 - input_features是类数组,则如果定义了- feature_names_in_,- input_features必须与- feature_names_in_匹配。
 
 
- 返回值:
- feature_names_out字符串对象的ndarray
- 转换后的特征名称。 
 
 
 - get_metadata_routing()[source]#
- 获取此对象的元数据路由。 - 请查看 用户指南,了解路由机制的工作原理。 - 1.6版本中添加。 - 返回值:
- routingMetadataRouter
- 一个 - MetadataRouter封装了路由信息。
 
 
 - get_params(deep=True)[source]#
- 获取此估计器的参数。 - 参数:
- deep布尔值,默认为 True
- 如果为 True,则将返回此估计器和包含的作为估计器的子对象的参数。 
 
- 返回值:
- params字典
- 参数名称与其值的映射。 
 
 
 - get_support(indices=False)[source]#
- 获取所选特征的掩码或整数索引。 - 参数:
- indices布尔值,默认为 False
- 如果为 True,则返回值将是整数数组,而不是布尔掩码。 
 
- 返回值:
- support数组
- 一个索引,用于从特征向量中选择保留的特征。如果 - indices为 False,则这是一个形状为 [# 输入特征] 的布尔数组,其中一个元素为 True 当且仅当其对应的特征被选中以供保留。如果- indices为 True,则这是一个形状为 [# 输出特征] 的整数数组,其值是输入特征向量的索引。
 
 
 - inverse_transform(X)[source]#
- 反转转换操作。 - 参数:
- X形状为 [n_samples, n_selected_features] 的数组
- 输入样本。 
 
- 返回值:
- X_r形状为 [n_samples, n_original_features] 的数组
- X,在- transform方法中移除特征的位置插入全零列。
 
 
 - predict(X, **predict_params)[source]#
- 将 X 简化为选择的特征,并使用估计器进行预测。 - 参数:
- X形状为 [n_samples, n_features] 的数组
- 输入样本。 
- **predict_params字典
- 传递给底层估计器 - predict方法的参数。- 1.6 版本新增: 仅当 - enable_metadata_routing=True时可用,可以通过- sklearn.set_config(enable_metadata_routing=True)设置。更多详情请参考 元数据路由用户指南。
 
- 返回值:
- y形状为 [n_samples] 的数组
- 预测的目标值。 
 
 
 - predict_log_proba(X)[source]#
- 预测 X 的类别对数概率。 - 参数:
- X形状为 [n_samples, n_features] 的数组
- 输入样本。 
 
- 返回值:
- p形状为 (n_samples, n_classes) 的数组
- 输入样本的类别对数概率。类别的顺序与属性 classes_ 中的顺序一致。 
 
 
 - predict_proba(X)[source]#
- 预测 X 的类别概率。 - 参数:
- X形状为 (n_samples, n_features) 的 {数组或稀疏矩阵}
- 输入样本。在内部,它将被转换为 - dtype=np.float32,如果提供稀疏矩阵,则转换为稀疏- csr_matrix。
 
- 返回值:
- p形状为 (n_samples, n_classes) 的数组
- 输入样本的类别概率。类别的顺序与属性 classes_ 中的顺序一致。 
 
 
 - score(X, y, **score_params)[source]#
- 将 X 简化为选择的特征,并返回估计器的得分。 - 参数:
- X形状为 [n_samples, n_features] 的数组
- 输入样本。 
- y形状为 [n_samples] 的数组
- 目标值。 
- **score_params字典
- 如果 - enable_metadata_routing=False(默认值):参数直接传递给底层估计器的- score方法。
- 如果 - enable_metadata_routing=True:参数安全地路由到底层估计器的- score方法。
 - 1.0 版本中添加。 - 1.6版本中的变化: 更多详情请参见 元数据路由用户指南。 
 
- 返回值:
- score浮点数
- 使用 - rfe.transform(X)和- y返回的选定特征计算的底层基本估计器的得分。
 
 
 - set_output(*, transform=None)[source]#
- 设置输出容器。 - 有关如何使用 API 的示例,请参阅 介绍 set_output API。 - 参数:
- transform{"default", "pandas", "polars"}, 默认值=None
- 配置 - transform和- fit_transform的输出。- "default":转换器的默认输出格式
- "pandas":DataFrame 输出
- "polars":Polars 输出
- None:转换配置保持不变
 - 1.4 版本新增: 添加了 - "polars"选项。
 
- 返回值:
- self估计器实例
- 估计器实例。 
 
 
 
 
    