SequentialFeatureSelector#
- class sklearn.feature_selection.SequentialFeatureSelector(estimator, *, n_features_to_select='auto', tol=None, direction='forward', scoring=None, cv=5, n_jobs=None)#
变压器,执行顺序特征选择。
此顺序特征选择器通过贪婪方式添加(前向选择)或移除(后向选择)特征来形成特征子集。在每个阶段,此估计器选择最佳特征以添加或移除,基于估计器的交叉验证得分。在无监督学习的情况下,此顺序特征选择器仅查看特征(X),而不查看期望输出(y)。
更多信息请参阅 用户指南 。
Added in version 0.24.
- Parameters:
- estimator估计器实例
一个未拟合的估计器。
- n_features_to_select“auto”, int 或 float, 默认=”auto”
如果
"auto"
,行为取决于tol
参数:如果
tol
不是None
,则在得分变化不超过tol
的情况下选择特征。否则,选择一半的特征。
如果为整数,该参数为要选择的绝对特征数量。如果为 0 到 1 之间的浮点数,则为要选择的特征比例。
Added in version 1.1: 选项
"auto"
在版本 1.1 中添加。Changed in version 1.3: 默认值从
"warn"
改为"auto"
在 1.3 中。- tolfloat, 默认=None
如果在连续的特征添加或移除过程中得分增加不超过
tol
,则停止添加或移除。在使用
direction="backward"
移除特征时,tol
可以为负值。这可能有助于在小幅得分下降的情况下减少特征数量。tol
仅在n_features_to_select
为"auto"
时启用。Added in version 1.1.
- direction{‘forward’, ‘backward’}, 默认=’forward’
执行前向选择还是后向选择。
- scoringstr 或 callable, 默认=None
一个单一的 str(见 scoring_parameter )或一个 callable(见 从指标函数定义您的评分策略 )来评估测试集上的预测。
注意,当使用自定义评分器时,它应返回单一值。
如果为 None,则使用估计器的 score 方法。
- cvint, 交叉验证生成器或可迭代对象, 默认=None
确定交叉验证分割策略。 cv 的可能输入为:
None,使用默认的 5 折交叉验证,
整数,指定
(Stratified)KFold
中的折数,一个可迭代对象,生成 (train, test) 索引数组对。
对于整数/None 输入,如果估计器是分类器且
y
为二分类或多分类, 使用StratifiedKFold
。在所有其他情况下,使用KFold
。这些分割器使用shuffle=False
实例化,因此分割将在多次调用中保持一致。请参阅 用户指南 以了解可以在此处使用的各种交叉验证策略。
- n_jobsint, 默认=None
并行运行的作业数量。在评估要添加或移除的新特征时,交叉验证过程在各折上并行。
None
表示 1,除非在joblib.parallel_backend
上下文中。-1
表示使用所有处理器。有关更多详细信息,请参阅 Glossary 。
- Attributes:
See also
GenericUnivariateSelect
具有可配置策略的单变量特征选择器。
RFE
基于重要性权重的递归特征消除。
RFECV
基于重要性权重的递归特征消除,自动选择特征数量。
SelectFromModel
基于重要性权重阈值的特征选择。
Examples
>>> 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)#
学习从X中选择特征。
- Parameters:
- X形状为 (n_samples, n_features) 的类数组
训练向量,其中
n_samples
是样本的数量,n_features
是预测变量的数量。- y形状为 (n_samples,) 的类数组,默认=None
目标值。对于无监督学习,此参数可能被忽略。
- 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
方法移除的地方插入零列。
- 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]
仅包含所选特征的输入样本。