我正在尝试学习如何在为数据集估算缺失值时实施MICE。我听说过fancyimpute的MICE,但我也读过sklearn的IterativeImputer类可以实现类似的结果。来自sklearn的文档:
我们的IterativeImputer实施受到R MICE的启发 包(通过链式方程进行的多元插补)[1],但 与之不同之处在于,它返回一个插补而不是多个插补 归因。但是,IterativeImputer也可以用于多个 通过将其重复应用于相同的数据集 sample_posterior = True
时可以得到不同的随机种子
我已经看到“种子”被用在不同的管道中,但是我对它们的理解却不足以在我自己的代码中实现它们。 我想知道是否有人可以解释并提供一个示例,说明如何使用sklearn的IterativeImputer为MICE插补实现种子?谢谢!
答案 0 :(得分:2)
IterativeImputer
的行为可以根据随机状态而改变。可以设置的随机状态也称为“种子”。
如文档所述,当将sample_posterior
设置为True
并更改随机种子(即参数random_state
)时,我们可以得到多个插补。
以下是使用方法的示例:
import numpy as np
from sklearn.experimental import enable_iterative_imputer
from sklearn.impute import IterativeImputer
X_train = [[1, 2],
[3, 6],
[4, 8],
[np.nan, 3],
[7, np.nan]]
X_test = [[np.nan, 2],
[np.nan, np.nan],
[np.nan, 6]]
for i in range(3):
imp = IterativeImputer(max_iter=10, random_state=i, sample_posterior=True)
imp.fit(X_train)
print(f"imputation {i}:")
print(np.round(imp.transform(X_test)))
它输出:
imputation 0:
[[ 1. 2.]
[ 5. 10.]
[ 3. 6.]]
imputation 1:
[[1. 2.]
[0. 1.]
[3. 6.]]
imputation 2:
[[1. 2.]
[1. 2.]
[3. 6.]]
我们可以观察到三种不同的推定。