当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python sklearn IterativeImputer用法及代码示例


本文简要介绍python语言中 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=- inf, max_value=inf, verbose=0, random_state=None, add_indicator=False)

多元估算器,从所有其他特征中估计每个特征。

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

在用户指南中阅读更多信息。

注意

这个估计器仍然实验目前:预测和 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()

在round-robin 插补的每个步骤中使用的估计器。如果 sample_posterior=True ,估计器必须在其 predict 方法中支持 return_std

missing_valuesint 或 np.nan,默认=np.nan

缺失值的占位符。所有出现的missing_values 都将被估算。对于带有缺失值的可空整数 dtype 的 pandas 数据帧,应将 missing_values 设置为 np.nan ,因为 pd.NA 将转换为 np.nan

sample_posterior布尔,默认=假

是否从每个插补的拟合估计量的(高斯)预测后验中采样。如果设置为 True ,估计器必须在其 predict 方法中支持 return_std。如果使用IterativeImputer 进行多重插补,则设置为True

max_iter整数,默认=10

在返回最后一轮计算的插补之前要执行的最大插补轮数。一轮是具有缺失值的每个特征的单一插补。停止条件满足一次 max(abs(X_t - X_{t-1}))/max(abs(X[known_vals])) < tol ,其中 X_t 在迭代 t 时为 X。请注意,仅在 sample_posterior=False 时才应用提前停止。

tol浮点数,默认=1e-3

停止条件的容差。

n_nearest_features整数,默认=无

用于估计每个特征列的缺失值的其他特征的数量。使用每个特征对之间的绝对相关系数(初始插补后)来测量特征之间的接近度。为了确保在整个插补过程中覆盖特征,相邻特征不一定是最近的,而是以与每个插补目标特征的相关性成比例的概率绘制。当特征数量巨大时可以提供显著的加速。如果是 None ,则将使用所有函数。

initial_strategy{‘mean’, ‘median’,‘most_frequent’, ‘constant’},默认='平均'

使用哪种策略来初始化缺失值。与 SimpleImputer 中的 strategy 参数相同。

imputation_order{‘ascending’, ‘descending’, ‘roman’, ‘arabic’, ‘random’},默认='升序'

特征将被估算的顺序。可能的值:

  • 'ascending':从缺失值最少到最多的特征。
  • 'descending':从缺失值最多到最少的特征。
  • 'roman':从左到右。
  • 'arabic':从右到左。
  • 'random':每轮随机顺序。
skip_complete布尔,默认=假

如果True,则在transform期间有缺失值的特征,而在fit期间没有任何缺失值的特征将仅使用初始插补方法进行插补。如果您有许多特征在 fittransform 时间都没有缺失值,则设置为 True 以节省计算。

min_value形状为浮点数或类似数组 (n_features,),默认=-np.inf

最小可能的估算值。如果是标量,则广播到形状(n_features,)。如果类似于数组,则需要形状 (n_features,) ,每个特征有一个最小值。默认为 -np.inf

max_value形状为浮点数或类似数组 (n_features,),默认=np.inf

最大可能的估算值。如果是标量,则广播到形状(n_features,)。如果类似于数组,则需要形状 (n_features,) ,每个特征都有一个最大值。默认为 np.inf

verbose整数,默认=0

详细程度标志,控制在评估函数时发出的调试消息。越高,越详细。可以是 0、1 或 2。

random_stateint、RandomState 实例或无,默认=无

要使用的伪随机数生成器的种子。如果 n_nearest_features 不是 None ,则随机选择估计器特征,如果 random 则随机选择 imputation_order ,如果 sample_posterior=True 则从后验抽样。使用整数进行确定性。请参阅词汇表。

add_indicator布尔,默认=假

如果 True ,则 MissingIndicator 变换将堆叠到 imputer 变换的输出上。这允许预测估计器解释缺失,尽管有插补。如果某个特征在拟合/训练时没有缺失值,则即使在变换/测试时存在缺失值,该特征也不会出现在缺失指示器上。

属性

initial_imputer_ SimpleImputer 类型的对象

Imputer 用于初始化缺失值。

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

拟合期间看到的特征数。

feature_names_in_ndarray 形状(n_features_in_,)

拟合期间看到的特征名称。仅当 X 具有全为字符串的函数名称时才定义。

n_features_with_missing_int

具有缺失值的特征数。

indicator_sklearn.impute.MissingIndicator

用于为缺失值添加二元指标的指标。 None 如果 add_indicator=False

random_state_RandomState 实例

RandomState 实例由种子、随机数生成器或由 np.random 生成。

注意

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

包含 fit 处所有缺失值的特征将在 transform 上被丢弃。

参考

1

Stef van Buuren, Karin Groothuis-Oudshoorn (2011)。 “小鼠:通过 R 中的链式方程进行多元插补”。统计软件杂志 45:1-67。

2

S. F. 巴克 (1960)。 “适用于电子计算机的多元数据中缺失值的估计方法”。皇家统计学会杂志 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([[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.        ]])

相关用法


注:本文由纯净天空筛选整理自scikit-learn.org大神的英文原创作品 sklearn.impute.IterativeImputer。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。