SimpleImputer#

sklearn.impute.SimpleImputer(*, missing_values=nan, strategy='mean', fill_value=None, copy=True, add_indicator=False, keep_empty_features=False)[来源]#

使用简单策略完成缺失值的单变量插补器。

使用描述性统计量(例如均值、中位数或众数)沿每列替换缺失值,或使用常数值进行替换。

用户指南中阅读更多内容。

版本 0.20 新增:SimpleImputer 替换了之前已被移除的 sklearn.preprocessing.Imputer 估计器。

参数:
missing_valuesint、float、str、np.nan、None 或 pandas.NA,默认值=np.nan

缺失值的占位符。所有 missing_values 的出现都将被填充。对于具有可空整数 dtype 和缺失值的 pandas 数据帧,missing_values 可以设置为 np.nanpd.NA

strategystr 或 Callable,默认值='mean'

填充策略。

  • 如果为“mean”,则使用每列的均值替换缺失值。只能用于数值数据。

  • 如果为“median”,则使用每列的中位数替换缺失值。只能用于数值数据。

  • 如果为“most_frequent”,则使用每列最频繁的值替换缺失值。可用于字符串或数值数据。如果存在多个此类值,则仅返回最小的。

  • 如果为“constant”,则用 fill_value 替换缺失值。可用于字符串或数值数据。

  • 如果是一个 Callable 实例,则通过对包含每列非缺失值的稠密一维数组运行该可调用对象,使用返回的标量统计量替换缺失值。

版本 0.20 新增:策略“constant”用于固定值填充。

版本 1.5 新增:策略=callable 用于自定义值填充。

fill_valuestr 或数值,默认值=None

当 strategy == “constant” 时,fill_value 用于替换所有出现的 missing_values。对于字符串或对象数据类型,fill_value 必须是字符串。如果为 None,则在填充数值数据时 fill_value 将为 0,对于字符串或对象数据类型则为“missing_value”。

copy布尔值, 默认为 True

如果为 True,则会创建 X 的副本。如果为 False,则在可能的情况下将原地进行填充。请注意,在以下情况下,即使 copy=False,也始终会创建新副本:

  • 如果 X 不是浮点数值数组;

  • 如果 X 编码为 CSR 矩阵;

  • 如果 add_indicator=True

add_indicatorbool, default=False

如果为 True,MissingIndicator 变换将堆叠在填充器变换的输出上。这使得预测估计器能够在填充后仍然考虑缺失值。如果一个特征在 fit/训练时没有缺失值,那么即使在 transform/测试时有缺失值,该特征也不会出现在缺失指示器中。

keep_empty_featuresbool, default=False

如果为 True,当调用 fit 时完全由缺失值组成的特征,在调用 transform 时会作为结果返回。填充值始终为 0,除非 strategy="constant",在这种情况下将使用 fill_value

1.2 版本新增。

属性:
statistics_形状为 (n_features,) 的数组

每个特征的填充值。计算统计量可能导致 np.nan 值。在 transform 期间,对应于 np.nan 统计量的特征将被丢弃。

indicator_MissingIndicator

用于为缺失值添加二进制指示器的指示器。None 如果 add_indicator=False

n_features_in_int

拟合 期间看到的特征数。

0.24 版本新增。

feature_names_in_shape 为 (n_features_in_,) 的 ndarray

fit 期间看到的特征名称。仅当 X 具有全部为字符串的特征名称时才定义。

1.0 版本新增。

另请参阅

IterativeImputer

多元填充器,根据所有其他特征估计每个具有缺失值的特征的填充值。

KNNImputer

多元填充器,使用最近样本估计缺失特征。

注意事项

如果在 fit 时仅包含缺失值的列,则在 transform 时会被丢弃,除非策略不是 "constant"

在预测环境中,简单填充通常在与弱学习器结合时表现不佳。然而,对于强大的学习器,它可能比复杂填充(例如 IterativeImputerKNNImputer)获得同样好甚至更好的性能。

示例

>>> import numpy as np
>>> from sklearn.impute import SimpleImputer
>>> imp_mean = SimpleImputer(missing_values=np.nan, strategy='mean')
>>> imp_mean.fit([[7, 2, 3], [4, np.nan, 6], [10, 5, 9]])
SimpleImputer()
>>> X = [[np.nan, 2, 3], [4, np.nan, 6], [10, np.nan, 9]]
>>> print(imp_mean.transform(X))
[[ 7.   2.   3. ]
 [ 4.   3.5  6. ]
 [10.   3.5  9. ]]

有关更详细的示例,请参阅 在构建估计器之前填充缺失值

拟合(X, y=None)[来源]#

X 上拟合填充器。

参数:
X{array-like, sparse matrix}, shape (n_samples, n_features)

输入数据,其中 n_samples 是样本数量,n_features 是特征数量。

y被忽略

Not used, present here for API consistency by convention.

返回:
selfobject

拟合的估计器。

拟合_变换(X, y=None, **fit_params)[来源]#

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

使用可选参数 fit_params 将转换器拟合到 Xy,并返回 X 的转换版本。

参数:
Xshape 为 (n_samples, n_features) 的 array-like

输入样本。

y形状为 (n_samples,) 或 (n_samples, n_outputs) 的类数组对象,默认=None

目标值(对于无监督转换,为 None)。

**fit_paramsdict

额外的拟合参数。仅当估计器在其 fit 方法中接受额外的参数时才传递。

返回:
X_newndarray array of shape (n_samples, n_features_new)

转换后的数组。

获取_特征_名称_输出(输入_特征=None)[来源]#

获取转换的输出特征名称。

参数:
input_featuresarray-like of str or None, default=None

输入特征。

  • 如果 input_featuresNone,则使用 feature_names_in_ 作为输入特征名称。如果 feature_names_in_ 未定义,则生成以下输入特征名称:["x0", "x1", ..., "x(n_features_in_ - 1)"]

  • 如果 input_features 是 array-like,则如果定义了 feature_names_in_input_features 必须与 feature_names_in_ 匹配。

返回:
feature_names_outstr 对象的 ndarray

转换后的特征名称。

获取_元数据_路由()[来源]#

获取此对象的元数据路由。

请查阅 用户指南,了解路由机制如何工作。

返回:
routingMetadataRequest

封装路由信息的 MetadataRequest

获取_参数(深度=True)[来源]#

获取此估计器的参数。

参数:
deepbool, default=True

如果为 True,将返回此估计器以及包含的子对象(如果它们是估计器)的参数。

返回:
paramsdict

参数名称映射到其值。

逆变换(X)[来源]#

将数据转换回原始表示。

反转在数组上执行的 transform 操作。此操作只能在 SimpleImputeradd_indicator=True 实例化后执行。

请注意,inverse_transform 只能反转具有缺失值二进制指示器的特征中的变换。如果一个特征在 fit 时没有缺失值,该特征将不会有二进制指示器,并且在 transform 时进行的填充将不会被反转。

0.24 版本新增。

参数:
X形状为 (n_samples, n_features + n_features_missing_indicator) 的类数组

要恢复到原始数据的填充数据。它必须是填充数据和缺失指示器掩码的增强数组。

返回:
X_original形状为 (n_samples, n_features) 的 ndarray

带有缺失值的原始 X,如同填充之前。

设置_输出(*, 变换=None)[来源]#

设置输出容器。

请参阅 用户指南 以了解更多详细信息,并参考 引入 set_output API 获取关于如何使用该 API 的示例。

参数:
transform{“default”, “pandas”, “polars”}, default=None

配置 transformfit_transform 的输出。

  • "default": 转换器的默认输出格式

  • "pandas": DataFrame 输出

  • "polars": Polars 输出

  • None: 转换配置保持不变

1.4 版本新增: 添加了 "polars" 选项。

返回:
selfestimator instance

估计器实例。

设置_参数(**参数)[来源]#

设置此估计器的参数。

此方法适用于简单的估计器以及嵌套对象(如 Pipeline)。后者具有 <component>__<parameter> 形式的参数,以便可以更新嵌套对象的每个组件。

参数:
**paramsdict

估计器参数。

返回:
selfestimator instance

估计器实例。

变换(X)[来源]#

填充 X 中的所有缺失值。

参数:
X{array-like, sparse matrix}, shape (n_samples, n_features)

要完成的输入数据。

返回:
X_imputed形状为 (n_samples, n_features_out) 的 {ndarray, 稀疏矩阵}

已填充值的 X