SequentialFeatureSelector#
- class sklearn.feature_selection.SequentialFeatureSelector(estimator, *, n_features_to_select='auto', tol=None, direction='forward', scoring=None, cv=5, n_jobs=None)[source]#
- 执行顺序特征选择的转换器。 - 此顺序特征选择器以贪婪的方式添加(正向选择)或删除(反向选择)特征以形成特征子集。在每个阶段,此估计器都会根据估计器的交叉验证得分选择要添加或删除的最佳特征。在无监督学习的情况下,此顺序特征选择器仅查看特征 (X),而不查看所需的输出 (y)。 - 在 用户指南 中了解更多信息。 - 在 0.24 版中添加。 - 参数:
- estimator估计器实例
- 未拟合的估计器。 
- n_features_to_select“auto”、int 或 float,默认为“auto”
- 如果为 - "auto",则行为取决于- tol参数- 如果 - tol不为- None,则在评分变化不超过- tol时选择特征。
- 否则,选择一半的特征。 
 - 如果为整数,则该参数是要选择的特征的绝对数量。如果为 0 到 1 之间的浮点数,则它是要选择的特征的分数。 - 1.1版本新增: - "auto"选项在 1.1 版本中添加。- 1.3版本变更: 默认值在 1.3 版本中从 - "warn"更改为- "auto"。
- tol浮点数,默认为 None
- 如果在两次连续的特征添加或删除之间,分数的增量至少小于 - tol,则停止添加或删除。- 使用 - direction="backward"删除特征时,- tol可以为负值。进行前向选择时,- tol必须为严格正值。它可以用来以牺牲少量分数下降为代价来减少特征数量。- 只有当 - n_features_to_select为- "auto"时,- tol才启用。- 1.1 版本新增。 
- direction{'forward', 'backward'},默认为 'forward'
- 是否执行前向选择或后向选择。 
- scoring字符串或可调用对象,默认为 None
- 用于评估测试集预测结果的单个字符串(参见 评分参数:定义模型评估规则)或可调用对象(参见 可调用评分器)。 - 注意,使用自定义评分器时,它应该返回单个值。 - 如果为 None,则使用估计器的 score 方法。 
- cv整数、交叉验证生成器或可迭代对象,默认为 None
- 确定交叉验证拆分策略。cv 的可能输入为: - None,使用默认的 5 折交叉验证; 
- 整数,指定 - (Stratified)KFold中的折数;
- 一个可迭代对象,产生 (train, test) 拆分作为索引数组。 
 - 对于整数/None 输入,如果估计器是分类器并且 - y是二元或多类,则使用- StratifiedKFold。在所有其他情况下,使用- KFold。这些分割器使用- shuffle=False实例化,因此拆分在调用之间将保持一致。- 请参考 用户指南,了解此处可用的各种交叉验证策略。 
- n_jobs整数,默认为 None
- 并行运行的作业数。在评估要添加或删除的新特征时,交叉验证过程在各个折上并行进行。 - None表示 1,除非在- joblib.parallel_backend上下文中。- -1表示使用所有处理器。更多详情请参见 词汇表。
 
- 属性:
 - 另请参阅 - GenericUnivariateSelect
- 具有可配置策略的单变量特征选择器。 
- RFE
- 基于重要性权重的递归特征消除。 
- RFECV
- 基于重要性权重的递归特征消除,并自动选择特征数量。 
- SelectFromModel
- 基于重要性权重阈值的特征选择。 
 - 示例 - >>> from sklearn.feature_selection import SequentialFeatureSelector >>> from sklearn.neighbors import KNeighborsClassifier >>> from sklearn.datasets import load_iris >>> X, y = load_iris(return_X_y=True) >>> knn = KNeighborsClassifier(n_neighbors=3) >>> sfs = SequentialFeatureSelector(knn, n_features_to_select=3) >>> sfs.fit(X, y) SequentialFeatureSelector(estimator=KNeighborsClassifier(n_neighbors=3), n_features_to_select=3) >>> sfs.get_support() array([ True, False, True, True]) >>> sfs.transform(X).shape (150, 3) - fit(X, y=None, **params)[source]#
- 学习从 X 中选择的特征。 - 参数:
- X形状为 (n_samples, n_features) 的类数组
- 训练向量,其中 - n_samples是样本数,- n_features是预测变量数。
- y形状为 (n_samples,) 的类数组,默认为 None
- 目标值。此参数对于无监督学习可以忽略。 
- **params字典,默认为 None
- 要传递给底层 - estimator、- cv和- scorer对象的参数。- 版本 1.6 中新增: 仅当 - enable_metadata_routing=True时可用,可通过- sklearn.set_config(enable_metadata_routing=True)设置。更多详情请参见 元数据路由用户指南。
 
- 返回:
- self对象
- 返回实例本身。 
 
 
 - fit_transform(X, y=None, **fit_params)[源代码]#
- 拟合数据,然后转换它。 - 使用可选参数 - 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)[源代码]#
- 根据选择的特征掩码特征名称。 - 参数:
- 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()[源代码]#
- 获取此对象的元数据路由。 - 请查看 用户指南,了解路由机制的工作原理。 - 版本 1.6 中新增。 - 返回:
- routingMetadataRouter
- 一个 - MetadataRouter,封装了路由信息。
 
 
 - get_params(deep=True)[源代码]#
- 获取此估计器的参数。 - 参数:
- deep布尔值,默认为 True
- 如果为 True,则将返回此估计器及其包含的子对象(为估计器)的参数。 
 
- 返回:
- params字典
- 参数名称与其值的映射。 
 
 
 - get_support(indices=False)[源代码]#
- 获取所选特征的掩码或整数索引。 - 参数:
- indices布尔值,默认为 False
- 如果为 True,则返回值将是整数数组,而不是布尔掩码。 
 
- 返回:
- support数组
- 选择从特征向量中保留的特征的索引。如果 - indices为 False,则这是一个形状为 [# 输入特征] 的布尔数组,其中一个元素为 True 当且仅当其对应的特征被选中以供保留。如果- indices为 True,则这是一个形状为 [# 输出特征] 的整数数组,其值是输入特征向量的索引。
 
 
 - inverse_transform(X)[源代码]#
- 反转转换操作。 - 参数:
- X形状为 [n_samples, n_selected_features] 的数组
- 输入样本。 
 
- 返回:
- X_r形状为 [n_samples, n_original_features] 的数组
- X,其中插入了零列,这些列本会被- transform删除。
 
 
 - set_output(*, transform=None)[source]#
- 设置输出容器。 - 参见 set_output API 介绍,了解如何使用该API的示例。 - 参数:
- transform{“default”, “pandas”, “polars”}, default=None
- 配置 - transform和- fit_transform的输出。- "default": 变换器的默认输出格式
- "pandas": DataFrame 输出
- "polars": Polars 输出
- None: 变换配置不变
 - 1.4版本新增: - "polars"选项已添加。
 
- 返回:
- self估计器实例
- 估计器实例。 
 
 
 
 
     
