SelectFromModel#
- class sklearn.feature_selection.SelectFromModel(estimator, *, threshold=None, prefit=False, norm_order=1, max_features=None, importance_getter='auto')#
元转换器,用于根据重要性权重选择特征。
Added in version 0.17.
更多信息请参阅 用户指南 。
- Parameters:
- estimatorobject
构建转换器的基础估计器。 这可以是一个已拟合的(如果
prefit
设置为 True) 或未拟合的估计器。估计器在拟合后应具有feature_importances_
或coef_
属性。 否则,应使用importance_getter
参数。- thresholdstr or float, default=None
用于特征选择的阈值。重要性值大于或等于该阈值的特征将被保留,其余的将被丢弃。如果为 “median”(或 “mean”),则
threshold
值为特征重要性的中位数(或平均值)。也可以使用缩放因子(例如,”1.25*mean”)。如果为 None 且估计器有参数 penalty 设置为 l1,无论是显式还是隐式(例如,Lasso),使用的阈值为 1e-5。否则,默认使用 “mean”。- prefitbool, default=False
是否期望直接将已拟合的模型传递给构造函数。 如果为
True
,estimator
必须是一个已拟合的估计器。 如果为False
,estimator
通过调用fit
和partial_fit
进行拟合和更新。- norm_order非零 int, inf, -inf, default=1
在估计器的
coef_
属性为二维的情况下,用于过滤低于threshold
的系数向量的范数顺序。- max_featuresint, callable, default=None
要选择的特征的最大数量。
如果为整数,则指定允许的最大特征数量。
如果为可调用对象,则指定如何通过使用
max_features(X)
的输出来计算允许的最大特征数量。如果为
None
,则保留所有特征。
仅基于
max_features
进行选择时,设置threshold=-np.inf
。Added in version 0.20.
Changed in version 1.1:
max_features
接受可调用对象。- importance_getterstr or callable, default=’auto’
如果为 ‘auto’,则通过估计器的
coef_
属性或feature_importances_
属性获取特征重要性。还接受指定用于提取特征重要性的属性名称/路径的字符串(通过
attrgetter
实现)。例如,在TransformedTargetRegressor
的情况下给出regressor_.coef_
,或在Pipeline
的情况下给出named_steps.clf.feature_importances_
,其最后一步名为clf
。如果为可调用对象,则覆盖默认的特征重要性获取器。可调用对象将传递已拟合的估计器,并应返回每个特征的重要性。
Added in version 0.24.
- Attributes:
- estimator_estimator
构建转换器的基础估计器。只有在调用
fit
后才存在此属性。如果
prefit=True
,则为estimator
的深拷贝。如果
prefit=False
,则为estimator
的克隆,并在传递给fit
或partial_fit
的数据上进行拟合。
n_features_in_
int在
fit
期间看到的特征数量。- max_features_int
在 fit 过程中计算的最大特征数量。仅在
max_features
不为None
时定义。如果
max_features
为整数,则max_features_ = max_features
。如果
max_features
为可调用对象,则max_features_ = max_features(X)
。
Added in version 1.1.
- feature_names_in_ndarray of shape (
n_features_in_
,) 在 fit 过程中看到的特征名称。仅在
X
的所有特征名称为字符串时定义。Added in version 1.0.
threshold_
float阈值用于特征选择。
See also
RFE
基于重要性权重的递归特征消除。
RFECV
带有内置交叉验证选择最佳特征数量的递归特征消除。
SequentialFeatureSelector
基于顺序交叉验证的特征选择。不依赖于重要性权重。
Notes
如果基础估计器允许,则允许输入中的 NaN/Inf。
Examples
>>> from sklearn.feature_selection import SelectFromModel >>> from sklearn.linear_model import LogisticRegression >>> X = [[ 0.87, -1.34, 0.31 ], ... [-2.79, -0.02, -0.85 ], ... [-1.34, -0.48, -2.55 ], ... [ 1.92, 1.48, 0.65 ]] >>> y = [0, 1, 0, 1] >>> selector = SelectFromModel(estimator=LogisticRegression()).fit(X, y) >>> selector.estimator_.coef_ array([[-0.3252..., 0.8345..., 0.4976...]]) >>> selector.threshold_ 0.55249... >>> selector.get_support() array([False, True, False]) >>> selector.transform(X) array([[-1.34], [-0.02], [-0.48], [ 1.48]])
使用可调用对象创建一个选择器,该选择器最多可以使用不超过输入特征一半的特征。
>>> def half_callable(X): ... return round(len(X[0]) / 2) >>> half_selector = SelectFromModel(estimator=LogisticRegression(), ... max_features=half_callable) >>> _ = half_selector.fit(X, y) >>> half_selector.max_features_ 2
- fit(X, y=None, **fit_params)#
拟合SelectFromModel元转换器。
- Parameters:
- X形状为(n_samples, n_features)的类数组
训练输入样本。
- y形状为(n_samples,)的类数组,默认=None
目标值(在分类中对应于类的整数,在回归中对应于实数)。
- **fit_paramsdict
如果
enable_metadata_routing=False
(默认):直接传递给子估计器
fit
方法的参数。如果prefit=True
,则忽略它们。如果
enable_metadata_routing=True
:安全路由到子估计器
fit
方法的参数。如果prefit=True
,则忽略它们。Changed in version 1.4: 有关更多详细信息,请参见:ref:
Metadata Routing User Guide <metadata_routing>
。
- 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()#
获取此对象的元数据路由。
请查看 用户指南 以了解路由机制的工作原理。
Added in version 1.4.
- Returns:
- routingMetadataRouter
MetadataRouter
封装的 路由信息。
- 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
方法移除的地方插入零列。
- property n_features_in_#
在
fit
期间看到的特征数量。
- partial_fit(X, y=None, **partial_fit_params)#
仅拟合一次SelectFromModel元转换器。
- Parameters:
- Xarray-like of shape (n_samples, n_features)
训练输入样本。
- yarray-like of shape (n_samples,), default=None
目标值(在分类中对应于类别的整数,在回归中为实数)。
- **partial_fit_paramsdict
如果
enable_metadata_routing=False
(默认):直接传递给子估计器的
partial_fit
方法的参数。如果
enable_metadata_routing=True
:传递给子估计器的
partial_fit
方法的参数。如果prefit=True
,则忽略这些参数。Changed in version 1.4: 如果通过
set_config
设置enable_metadata_routing=True
,则**partial_fit_params
会被路由到子估计器,这允许别名。有关更多详细信息,请参见 Metadata Routing User Guide 。
- Returns:
- selfobject
拟合后的估计器。
- 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
估计器实例。
- property threshold_#
阈值用于特征选择。
- transform(X)#
将X 缩减为选定的特征。
- Parameters:
- Xarray of shape [n_samples, n_features]
输入样本。
- Returns:
- X_rarray of shape [n_samples, n_selected_features]
仅包含所选特征的输入样本。