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', fill_value=None, imputation_order='ascending', skip_complete=False, min_value=-inf, max_value=inf, verbose=0, random_state=None, add_indicator=False, keep_empty_features=False)[源代码]#
多元插补器,从所有其他特征估计每个特征。
一种缺失值填补策略,通过将每个带有缺失值的特征建模为其他特征的函数,并以轮询(round-robin)方式进行迭代填补。
更多详情请参阅 用户指南。
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估计器对象, 默认=BayesianRidge()
在轮询填补的每个步骤中使用的估计器。如果
sample_posterior=True,则该估计器必须在其predict方法中支持return_std参数。- missing_valuesint 或 np.nan, 默认=np.nan
缺失值的占位符。所有出现的
missing_values都将被填补。对于具有可为空整数类型(nullable integer dtypes)且包含缺失值的 pandas 数据框,由于pd.NA将被转换为np.nan,因此missing_values应设置为np.nan。- sample_posteriorbool, 默认=False
是否从拟合估计器的(高斯)预测后验分布中为每次填补进行采样。如果设置为
True,估计器必须在其predict方法中支持return_std。如果将IterativeImputer用于多重插补(multiple imputations),请设置为True。- max_iterint, 默认=10
在返回最后一轮计算的填补值之前执行的最大填补轮数。一轮是指对每个带有缺失值的特征进行一次填补。当满足停止条件
max(abs(X_t - X_{t-1}))/max(abs(X[known_vals])) < tol时停止,其中X_t是第t次迭代时的X。注意,只有在sample_posterior=False时才会应用提前停止。- tolfloat, default=1e-3
停止条件的容差。
- n_nearest_featuresint, 默认=None
用于估计每个特征列缺失值的其他特征的数量。特征之间的接近程度是使用每对特征之间的绝对相关系数(在初始填补后)来衡量的。为了确保在整个填补过程中覆盖特征,相邻特征不一定是绝对最近的,而是以与每个被填补目标特征的相关性成比例的概率抽取的。当特征数量巨大时,这可以显著提高速度。如果为
None,则将使用所有特征。- initial_strategy{‘mean’, ‘median’, ‘most_frequent’, ‘constant’}, 默认=’mean’
用于初始化缺失值的策略。与
SimpleImputer中的strategy参数相同。- fill_valuestr 或数值, 默认=None
当
strategy="constant"时,fill_value用于替换所有出现的 missing_values。对于字符串或对象数据类型,fill_value必须是字符串。如果为None,在填补数值数据时fill_value将为 0,对于字符串或对象数据类型则为 “missing_value”。在版本 1.3 中新增。
- imputation_order{‘ascending’, ‘descending’, ‘roman’, ‘arabic’, ‘random’}, 默认=’ascending’
特征填补的顺序。可能的值包括:
'ascending': 从缺失值最少的特征到最多的特征。'descending': 从缺失值最多的特征到最少的特征。'roman': 从左到右。'arabic': 从右到左。'random': 每轮填补使用随机顺序。
- skip_completebool, 默认=False
如果为
True,则在fit期间没有任何缺失值,但在transform期间出现缺失值的特征,将仅使用初始填补方法进行填补。如果您有许多在fit和transform时都没有缺失值的特征,请设置为True以节省计算资源。- min_valuefloat 或形状为 (n_features,) 的类数组, 默认=-np.inf
填补值的最小可能值。如果是标量,则广播至形状
(n_features,)。如果是类数组,则期望形状为(n_features,),即每个特征对应一个最小值。默认值为-np.inf。在 0.23 版本中更改: 添加了对类数组的支持。
- max_valuefloat 或形状为 (n_features,) 的类数组, 默认=np.inf
填补值的最大可能值。如果是标量,则广播至形状
(n_features,)。如果是类数组,则期望形状为(n_features,),即每个特征对应一个最大值。默认值为np.inf。在 0.23 版本中更改: 添加了对类数组的支持。
- verboseint, default=0
详细程度标志,控制函数执行时输出的调试信息。数值越高,输出越详细。可以为 0、1 或 2。
- random_stateint, RandomState instance or None, default=None
使用的伪随机数生成器的种子。当
n_nearest_features不为None时随机化估计器特征的选择,当imputation_order为random时随机化顺序,以及当sample_posterior=True时从后验分布中采样。使用整数以获得确定性结果。参见 术语表。- add_indicatorbool, default=False
如果为
True,则MissingIndicator转换将堆叠到填补器的转换输出上。这允许预测估计器即使在填补之后也能考虑到缺失情况。如果某个特征在拟合/训练时没有缺失值,即使在转换/测试时有缺失值,该特征也不会出现在缺失指示器上。- keep_empty_featuresbool, default=False
如果为 True,则在调用
fit时完全由缺失值组成的特征,在调用transform时的结果中予以保留。填补值始终为0,除非initial_strategy="constant",在这种情况下将使用fill_value代替。1.2 版本新增。
- 属性:
- initial_imputer_
SimpleImputer类型的对象 用于初始化缺失值的填补器。
- imputation_sequence_元组列表
每个元组包含
(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_in_int
在 拟合 期间看到的特征数。
0.24 版本新增。
- feature_names_in_shape 为 (
n_features_in_,) 的 ndarray 在 fit 期间看到的特征名称。仅当
X具有全部为字符串的特征名称时才定义。1.0 版本新增。
- n_features_with_missing_int
带有缺失值的特征数量。
- indicator_
MissingIndicator 用于添加缺失值二进制指示器的指示器。如果
add_indicator=False则为None。- random_state_RandomState 实例
由种子、随机数生成器或
np.random生成的 RandomState 实例。
- initial_imputer_
另请参阅
SimpleImputer使用简单策略完成缺失值的单变量插补器。
KNNImputer使用最近样本估计缺失特征的多变量填补器。
注意事项
为了支持归纳(inductive)模式下的填补,我们在
fit阶段存储每个特征的估计器,并在transform阶段按顺序进行预测而无需重新拟合。在
fit时包含全部缺失值的特征在transform时会被丢弃。使用默认设置时,填补器的复杂度为 \(\mathcal{O}(knp^3\min(n,p))\),其中 \(k\) =
max_iter,\(n\) 是样本数,\(p\) 是特征数。因此,当特征数量增加时,其计算成本会变得极高。设置n_nearest_features << n_features、skip_complete=True或增大tol有助于降低其计算成本。根据缺失值的性质,在预测场景中,简单填补器可能更为合适。
References
示例
>>> 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. ]])
有关更详细的示例,请参见 在构建估计器之前填补缺失值 或 使用 IterativeImputer 变体填补缺失值。
- fit(X, y=None, **fit_params)[源代码]#
在
X上拟合填补器并返回 self。- 参数:
- Xarray-like, shape (n_samples, n_features)
输入数据,其中
n_samples是样本数量,n_features是特征数量。- y被忽略
未使用,按照惯例为保持 API 一致性而存在。
- **fit_paramsdict
通过元数据路由 API 路由到子估计器
fit方法的参数。1.5 版本中新增: 仅在设置了
sklearn.set_config(enable_metadata_routing=True)时可用。更多详情请参见 元数据路由用户指南。
- 返回:
- selfobject
拟合的估计器。
- fit_transform(X, y=None, **params)[源代码]#
在
X上拟合填补器并返回转换后的X。- 参数:
- Xarray-like, shape (n_samples, n_features)
输入数据,其中
n_samples是样本数量,n_features是特征数量。- y被忽略
未使用,按照惯例为保持 API 一致性而存在。
- **paramsdict
通过元数据路由 API 路由到子估计器
fit方法的参数。1.5 版本中新增: 仅在设置了
sklearn.set_config(enable_metadata_routing=True)时可用。更多详情请参见 元数据路由用户指南。
- 返回:
- Xt形状为 (n_samples, n_features) 的类数组
已填补的输入数据。
- get_feature_names_out(input_features=None)[源代码]#
获取转换的输出特征名称。
- 参数:
- input_featuresarray-like of str or None, default=None
输入特征。
如果
input_features为None,则使用feature_names_in_作为输入特征名称。如果feature_names_in_未定义,则生成以下输入特征名称:["x0", "x1", ..., "x(n_features_in_ - 1)"]。如果
input_features是 array-like,则如果定义了feature_names_in_,input_features必须与feature_names_in_匹配。
- 返回:
- feature_names_outstr 对象的 ndarray
转换后的特征名称。
- get_metadata_routing()[源代码]#
获取此对象的元数据路由。
请查阅 用户指南,了解路由机制如何工作。
1.5 版本新增。
- 返回:
- routingMetadataRouter
封装路由信息的
MetadataRouter。
- get_params(deep=True)[源代码]#
获取此估计器的参数。
- 参数:
- deepbool, default=True
如果为 True,将返回此估计器以及包含的子对象(如果它们是估计器)的参数。
- 返回:
- paramsdict
参数名称映射到其值。
- set_output(*, transform=None)[源代码]#
设置输出容器。
请参阅 用户指南 以了解更多详细信息,并参考 引入 set_output API 获取关于如何使用该 API 的示例。
- 参数:
- transform{“default”, “pandas”, “polars”}, default=None
配置
transform和fit_transform的输出。"default": 转换器的默认输出格式"pandas": DataFrame 输出"polars": Polars 输出None: 转换配置保持不变
1.4 版本新增: 添加了
"polars"选项。
- 返回:
- selfestimator instance
估计器实例。