sklearn.impute.IterativeImputer

class sklearn.impute.IterativeImputer(estimator=None, *, missing_values=nan, sample_posterior=False, max_iter=10, tol=0.001, n_nearest_features=None, initial_strategy='mean', imputation_order='ascending', skip_complete=False, min_value=None, max_value=None, verbose=0, random_state=None, add_indicator=False)

[源码]

从所有其他特征中估计每个特征的多元插补器。

一种通过以循环方式将具有缺失值的每个特征建模为其他特征的函数来估算缺失值的策略。

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

0.21版中的新功能。

注意:此估计器目前仍处于试验阶段:预测和API可能会更改,而不会出现任何弃用周期。要使用它,您需要显式导入enable_iterative_imputer

>>> # explicitly require this experimental feature
>>> from sklearn.experimental import enable_iterative_imputer  # noqa
>>> # now you can import normally from sklearn.impute
>>> from sklearn.impute import IterativeImputer
参数 说明
estimator estimator object, default=BayesianRidge()
在循环插补的每个步骤中使用的估计器。如果sample_posterior为True,则估算器必须在predict方法中提供支持return_std
missing_values int, np.nan, default=np.nan
缺失值的占位符。所有出现missing_values的情况都将被估算。对于具有缺失值的可空整数类型的pandas数据框,missing_values 应将其设置为np.nan,因为pd.NA将转换为np.nan
sample_posterior boolean, default=False
是否对每个拟合估计器的(高斯)后验预测进行采样。如果设为True,估计器必须支持predict方法中的return_std。如果IterativeImputer用于多个插补,则设置为 True
max_iter int, default=10
返回最后一轮计算的插补之前要执行的最大插补轮数。一轮是对每个缺失值的特征进行一次插补。遇到abs(max(X_t - X_{t-1}))/abs(max(X[known_vals]))<TOL则停止,这里X_t是在迭代t中的X。注意只有在sample_posterior=False时才会提前停止。
tol float, default=1e-3
停止条件的容差。
n_nearest_features int, default=None
用于估计每个特征列的缺失值的其他特征数。使用每个特征对之间的绝对相关系数(在初始插补之后)测量特征之间的邻近度。为了确保整个插补过程中的特征覆盖,相邻特征不一定是最接近的,而是以与每个插补目标特征的相关性成比例的概率来提取。当特征很多时可以大大提高速度。如果为None,则将使用所有特征。
initial_strategy str, default=’mean’
用于初始化缺失值的策略。与 sklearn.impute.SimpleImputer中的strategy参数有效值相同:{“mean”, “median”,“most_frequent”或“ constant”}。
imputation_order str, default=’ascending’
特征的插补顺序。可能的取值有:
- “ascending”
从缺失值最少的特征到最多的特征。
- “descending”
从缺失值最多的特征到最少的特征。
- “roman”
左到右。
- “arabic”
右到左。
- “random”
每轮随机顺序。
skip_complete boolean, default=False
如果为True,包含有缺失值的特征在进行fit期间没有任何缺失值的transform转换时 ,将仅使用初始插补方法来插补。如果有很多特征在fittransform时都没有缺失值保存计算,则设置为True
min_value float or array-like of shape (n_features,), default=None.
最小的可能估算值。如果为标量,广播成(n_features,)的形状。如果为类数组,则期望形状为(n_features,),每个特征有一个最小值。None(默认)将转换为np.inf。
max_value float or array-like of shape (n_features,), default=None.
最大的可能估算值。如果为标量,广播成(n_features,)的形状。如果为类数组,则期望形状为(n_features,),每个特征有一个最大值。None(默认)将转换为np.inf。
verbose int, default=0
详细度标志,控制在评估函数时发出的调试消息。越大,输出越冗长。可以是0、1或2。
random_state int, RandomState instance or None, default=None
要使用的伪随机数生成器的种子。如果n_nearest_features不为None,对估计器特征进行随机选择,如果为 random,则imputation_order;如果 sample_posterior为True,则从后验采样。确定性使用整数。请参阅词汇表
add_indicator boolean, default=False
如果为True,则MissingIndicator转换将堆叠到输入的转换的输出上。这使得预测性估计器可以解释尽管进行了插补但仍存在缺失。如果某个特征在拟合或训练时没有缺失值,则即使在变换或测试时有缺失值,该特征也不会出现在缺失指示器上。
参数 说明
initial_imputer_ object of type sklearn.impute.SimpleImputer
用于初始化缺失值的插补器。
imputation_sequence_ list of tuples
每个元组具有(feat_idx, neighbor_feat_idx, estimator),其中feat_idx是要插补的当前特征,neighbor_feat_idx是用于插补当前特征的其他特征的数组,并且estimator是用于插补的经过训练的估计器。长度为self.n_features_with_missing_ * self.n_iter_
n_iter_ int
发生的迭代轮数。如果达到提前停止标准,将小于 self.max_iter
n_features_with_missing_ int
包含缺失值的特征数量。
indicator_ sklearn.impute.MissingIndicator
用于为缺失值添加二进制指标的指示器。 如果add_indicator为False,则为None
random_state_ RandomState instance
由种子、随机数生成器或np.random生成的RandomState实例。

另见

为了支持归纳模式下的插补,我们在fit阶段中存储每个特征的估计量,并在transform阶段中进行预测而无需重新拟合(按顺序)。

transform之前,全部为缺失值的特征将在fit时丢弃。

参考

1 Stef van Buuren, Karin Groothuis-Oudshoorn (2011). “mice: Multivariate Imputation by Chained Equations in R”. Journal of Statistical Software 45: 1-67.

2 S. F. Buck, (1960). “A Method of Estimation of Missing Values in Multivariate Data Suitable for use with an Electronic Computer”. Journal of the Royal Statistical Society 22(2): 302-306.

示例

>>> import numpy as np
>>> from sklearn.experimental import enable_iterative_imputer
>>> from sklearn.impute import IterativeImputer
>>> imp_mean = IterativeImputer(random_state=0)
>>> imp_mean.fit([[723], [4, np.nan, 6], [1059]])
IterativeImputer(random_state=0)
>>> X = [[np.nan, 23], [4, np.nan, 6], [10, np.nan, 9]]
>>> imp_mean.transform(X)
array([[ 6.9584...,  2.       ,  3.        ],
       [ 4.       ,  2.6000...,  6.        ],
       [10.       ,  4.9999...,  9.        ]])

方法

方法 说明
fit(X[, y]) 在X上拟合插补,然后返回self对象。
fit_transform(X[, y]) 在X上拟合输入项并返回变换后的X。
get_params([deep]) 获取此估计器的参数。
set_params(**params) 设置此估计器的参数。
transform(X) 对X中所有缺失值进行插补。
__init__(estimator=None, *, missing_values=nan, sample_posterior=False, max_iter=10, tol=0.001, n_nearest_features=None, initial_strategy='mean', imputation_order='ascending', skip_complete=False, min_value=None, max_value=None, verbose=0, random_state=None, add_indicator=False)

[源码]

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

fit(X, y=None)

[源码]

在X上拟合插补,然后返回self对象。

参数 说明
X {array-like, sparse matrix}, shape (n_samples, n_features)
输入数据,其中n_samples是样本数, n_features是特征数。
y ignored
返回值 说明
self object
返回self对象。
fit_transform(X, y=None)

[源码]

在X上拟合输入项并返回变换后的X。

参数 说明
X array-like, shape (n_samples, n_features)
输入数据,其中n_samples是样本数, n_features是特征数。
y ignored
返回值 说明
Xt array-like, shape (n_samples, n_features)
估算的输入数据。
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中所有缺失值进行插补。

请注意,这是随机的,并且如果random_state不固定,则重复调用或排列输入将产生不同的结果。

参数 说明
X array-like of shape (n_samples, n_features)
输入数据。
返回值 说明
Xt array-like, shape (n_samples, n_features)
估算的输入数据。