使用skLearning IterativeImputer类为鼠标输入遗漏的值
问题描述
我正在尝试学习如何实现MICE来输入我的数据集的缺失值。我听说过Fancyimpute的鼠标,但我也读到Sklearn的IterativeImputer类可以实现类似的结果。摘自SkLearning的文档:
我们实现IterativeImputer的灵感来自R MICE Package(链式方程的多元推算)[1],但是 与它的不同之处在于,它返回单个补偿而不是多个 推卸责任。但是,IterativeImputer也可以用于多个 通过将其重复应用于相同的数据集 Sample_After=True时的不同随机种子
我见过在不同的管道中使用"种子",但我对它们的理解还不够深入,无法在我自己的代码中实现它们。我想知道有没有人能解释一下,并提供一个如何使用skLearning的IterativeImputer来实现小鼠种子的例子?谢谢!
解决方案
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.]]
我们可以观察到这三种不同的推论。
相关文章