sklearn.impute.KNNImputer

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

[源码]

使用k近邻来完成缺失值的估算。

每个样本的缺失值都是使用训练集中找到的n_neighbors最近邻的平均值估算的 。如果两个样本都没有丢失的特征很接近,那么这两个样本就是相近的。

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

0.22版中的新功能。

参数 说明
missing_values number, string, np.nan or None, default=np.nan
缺失值的占位符。所有出现missing_values的情况都将被估算。对于具有缺失值的可空整数类型的pandas数据框,missing_values 应将其设置为np.nan,因为pd.NA将转换为np.nan
n_neighbors int, 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关键字, 并返回标量距离值。
copy bool, default=True
如果为True,将创建X的副本。如果为False,只要可能,就要对其进行插补。
add_indicator bool, default=False
如果为True,则MissingIndicator转换将堆叠到输入的转换的输出上。这使得预测性估计器可以解释尽管进行了插补但仍存在缺失。如果某个特征在拟合或训练时没有缺失值,则即使在变换或测试时有缺失值,该特征也不会出现在缺失指示器上。
属性 说明
indicator_ sklearn.impute.MissingIndicator
用于为缺失值添加二进制指示符的指示符。 如果add_indicator为False,则None

参考

Olga Troyanskaya, Michael Cantor, Gavin Sherlock, Pat Brown, Trevor Hastie, Robert Tibshirani, David Botstein and Russ B. Altman, Missing value estimation methods for DNA microarrays, BIOINFORMATICS Vol. 17 no. 6, 2001 Pages 520-525.

示例

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

方法

方法 说明
fit(X[, y]) 在X上拟合转换器。
fit_transform(X[, y]) 拟合数据,然后对其进行转换。
get_params([deep]) 获取此估计器的参数。
set_params(**params) 设置此估计器的参数。
transform(X) 估算X中的所有缺失值。
__init__(*, missing_values=nan, n_neighbors=5, weights='uniform', metric='nan_euclidean', copy=True, add_indicator=False)

[源码]

初始化self,参见help(type(self))获取更准确的说明。

fit(X, y=None)

[源码]

在X上拟合转换器。

参数 说明
X array-like shape of (n_samples, n_features)
输入数据,其中n_samples是样本数, n_features是特征数。
返回值 说明
self object
fit_transform(X, y=None, **fit_params)

[源码]

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

使用可选参数fit_params将转换器拟合到X和y,并返回X的转换值。

参数 说明
X {array-like, sparse matrix, dataframe} of shape (n_samples, n_features)
y ndarray of shape (n_samples,), default=None
目标值。
**fit_params dict
其他拟合参数。
返回值 说明
X_new ndarray array of shape (n_samples, n_features_new)
转换后的数组。
get_params(deep=True)

[源码]

获取此估计器的参数。

参数 说明
deep bool, default=True
如果为True,则将返回此估算器和所包含子对象的参数。
返回值 说明
params mapping of string to any
参数名称映射到其值。
set_params(**params)

[源码]

设置此估算器的参数。

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

参数 说明
**params dict
估计器参数。
返回值 说明
self object
估计器实例。
transform(X)

[源码]

对X中所有缺失值进行插补。

参数 说明
X array-like of shape (n_samples, n_features)
输入数据。
返回值 说明
X array-like of shape (n_samples, n_output_features)
插补数据集。n_output_featuresfit期间是没有缺失值的特征数。