SimpleImputer#

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

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

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

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

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

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

缺失值的占位符。`missing_values` 的所有出现都将被插补。对于带有可空整型数据类型和缺失值的 pandas 数据帧,`missing_values` 可以设置为 `np.nan` 或 `pd.NA`。

strategystr 或 Callable, 默认值='mean'

插补策略。

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

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

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

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

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

版本 0.20 新增:strategy=”constant” 用于固定值插补。

版本 1.5 新增:strategy=callable 用于自定义值插补。

fill_valuestr 或数值, 默认值=None

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

copybool, 默认值=True

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

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

  • 如果 `X` 被编码为 CSR 矩阵;

  • 如果 `add_indicator=True`。

add_indicatorbool, 默认值=False

如果为 True,则 MissingIndicator 变换将堆叠在插补器变换的输出上。这允许预测估计器在插补后仍能考虑缺失情况。如果某个特征在 fit/train 时没有缺失值,则即使在 transform/test 时存在缺失值,该特征也不会出现在缺失指示器中。

keep_empty_featuresbool, 默认值=False

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

版本 1.2 新增。

版本 1.6 更改:目前,当 `keep_empty_feature=False` 且 `strategy="constant"` 时,空特征不会被丢弃。此行为将在版本 1.8 中更改。将 `keep_empty_feature=True` 设置为保留此行为。

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

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

indicator_MissingIndicator

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

n_features_in_int

fit期间看到的特征数量。

版本 0.24 新增。

feature_names_in_形状为 (n_features_in_,) 的 ndarray

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

版本 1.0 新增。

另请参阅

IterativeImputer

多元插补器,用于根据所有其他特征估计每个具有缺失值的特征的插补值。

KNNImputer

多元插补器,用于使用最近样本估计缺失特征。

注意事项

如果策略不是 `\"constant\"`,则在 fit 时仅包含缺失值的列将在 transform 时被丢弃。

在预测场景中,简单插补通常与弱学习器结合时表现不佳。然而,与强大的学习器结合时,它可能导致与复杂插补(例如 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. ]]

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

fit(X, y=None)[source]#

X 上拟合插补器。

参数:
X{array-like, 稀疏矩阵}, 形状 (n_samples, n_features)

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

y忽略

未使用,按惯例在此处保持 API 一致性。

返回:
self对象

已拟合的估计器。

fit_transform(X, y=None, **fit_params)[source]#

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

使用可选参数 `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)[source]#

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

参数:
input_featuresstr 或 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_outstr 对象的 ndarray

转换后的特征名称。

get_metadata_routing()[source]#

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

请查阅用户指南以了解路由机制的工作原理。

返回:
routingMetadataRequest

一个封装路由信息的 MetadataRequest

get_params(deep=True)[source]#

获取此估计器的参数。

参数:
deepbool, 默认值=True

如果为 True,将返回此估计器及其包含的作为估计器的子对象的参数。

返回:
params字典

参数名称映射到其值。

inverse_transform(X)[source]#

将数据转换回原始表示形式。

反转对数组执行的 `transform` 操作。此操作只能在 SimpleImputer 使用 `add_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`,即插补之前的状态。

set_output(*, transform=None)[source]#

设置输出容器。

有关如何使用 API 的示例,请参阅set_output API 简介

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

配置 `transform` 和 `fit_transform` 的输出。

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

  • “pandas”: DataFrame 输出

  • “polars”: Polars 输出

  • None: 转换配置不变

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

返回:
self估计器实例

估计器实例。

set_params(**params)[source]#

设置此估计器的参数。

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

参数:
**params字典

估计器参数。

返回:
self估计器实例

估计器实例。

transform(X)[source]#

插补 X 中的所有缺失值。

参数:
X{array-like, 稀疏矩阵}, 形状 (n_samples, n_features)

要完成的输入数据。

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

带有插补值的 `X`。