KNNImputer#

class sklearn.impute.KNNImputer(*, missing_values=nan, n_neighbors=5, weights='uniform', metric='nan_euclidean', copy=True, add_indicator=False, keep_empty_features=False)#

补全缺失值的插补方法,使用k-最近邻算法。

每个样本的缺失值使用训练集中找到的 n_neighbors 个最近邻样本的均值进行插补。两个样本如果它们都不缺失的特征接近,则它们是接近的。

更多信息请参阅 用户指南

Added in version 0.22.

Parameters:
missing_valuesint, float, str, np.nan or None, default=np.nan

缺失值的占位符。所有出现的 missing_values 将被插补。对于带有缺失值的pandas数据框且具有可空整数类型, missing_values 应设置为np.nan,因为 pd.NA 将被转换为np.nan。

n_neighborsint, default=5

用于插补的邻近样本数量。

weights{‘uniform’, ‘distance’} or callable, default=’uniform’

用于预测的权重函数。可能的值:

  • ‘uniform’ : 均匀权重。每个邻域中的所有点权重相同。

  • ‘distance’ : 按距离的倒数加权。在这种情况下,查询点的近邻将有比远邻更大的影响。

  • callable : 用户定义的函数,该函数接受距离数组并返回包含权重且形状相同的数组。

metric{‘nan_euclidean’} or callable, default=’nan_euclidean’

用于搜索邻近点的距离度量。可能的值:

  • ‘nan_euclidean’

  • callable : 用户定义的函数,该函数符合 _pairwise_callable(X, Y, metric, **kwds) 的定义。函数接受两个数组X和Y,以及 kwds 中的 missing_values 关键字,并返回标量距离值。

copybool, default=True

如果为True,将创建X的副本。如果为False,插补将在可能的情况下就地进行。

add_indicatorbool, default=False

如果为True,MissingIndicator 变换将堆叠到插补器的变换输出上。这使得预测估计器即使在插补后也能考虑缺失情况。如果在拟合/训练时特征没有缺失值,即使在变换/测试时有缺失值,该特征也不会出现在缺失指示器上。

keep_empty_featuresbool, default=False

如果为True,当调用 fit 时完全由缺失值组成的特征将在调用 transform 时返回结果。插补值始终为 0

Added in version 1.2.

Attributes:
indicator_MissingIndicator

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

n_features_in_int

fit 期间看到的特征数量。

Added in version 0.24.

feature_names_in_ndarray of shape ( n_features_in_ ,)

fit 期间看到的特征名称。仅当X的特征名称均为字符串时定义。

Added in version 1.0.

See also

SimpleImputer

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

IterativeImputer

多变量插补器,通过从所有其他特征估计值来插补每个有缺失值的特征。

References

Examples

>>> import numpy as np
>>> from sklearn.impute import KNNImputer
>>> X = [[1, 2, np.nan], [3, 4, 3], [np.nan, 6, 5], [8, 8, 7]]
>>> imputer = KNNImputer(n_neighbors=2)
>>> imputer.fit_transform(X)
array([[1. , 2. , 4. ],
       [3. , 4. , 3. ],
       [5.5, 6. , 5. ],
       [8. , 8. , 7. ]])

更多详细示例请参见 在构建估计器之前填补缺失值

fit(X, y=None)#

拟合输入器在X上。

Parameters:
X类数组形状为 (n_samples, n_features)

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

y忽略

未使用,此处存在是为了通过约定保持API一致性。

Returns:
selfobject

已拟合的 KNNImputer 类实例。

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()#

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

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

Returns:
routingMetadataRequest

MetadataRequest 封装的 路由信息。

get_params(deep=True)#

获取此估计器的参数。

Parameters:
deepbool, 默认=True

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

Returns:
paramsdict

参数名称映射到它们的值。

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

估计器实例。

transform(X)#

填补X中的所有缺失值。

Parameters:
X形状为 (n_samples, n_features) 的类数组

需要填补的输入数据。

Returns:
X形状为 (n_samples, n_output_features) 的类数组

填补后的数据集。 n_output_features 是在 fit 过程中不总是缺失的特征数量。