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 转换时 ,将仅使用初始插补方法来插补。如果有很多特征在fit 和transform 时都没有缺失值保存计算,则设置为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
时丢弃。
参考
示例
>>> 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([[7, 2, 3], [4, np.nan, 6], [10, 5, 9]])
IterativeImputer(random_state=0)
>>> X = [[np.nan, 2, 3], [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) 估算的输入数据。 |