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

是否期望直接将已拟合的模型传递给构造函数。 如果为 Trueestimator 必须是一个已拟合的估计器。 如果为 Falseestimator 通过调用 fitpartial_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 的克隆,并在传递给 fitpartial_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)#

拟合数据,然后进行转换。

将转换器拟合到 Xy ,并带有可选参数 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_featuresNone ,则使用 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

配置 transformfit_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]

仅包含所选特征的输入样本。