运行 小鼠插补的时间估计?

Run time estimation of mice imputation?

我使用小鼠插补来填充机器学习数据集的缺失值。数据集很大,有 11726412 行和 30 列。这是此数据中缺失值的数量:

In [2]:X.isnull().sum()

Out[2]: 
time                           0
count_neshan                   0
count_scat_o             4059792
count_avl_en_o           7364664
count_avl_ex_o           7364664
count_anpr_o             9646200
karmnd_dr_mhl_shghl_o          0
veh_own_o                      0
n_bussi_unit_o                 0
park_area_o                    0
area_o                         0
office_land_use_o              0
n_office_o                     0
commercial_unit_o              0
n_commercial_o                 0
schl_o                         0
count_scat_d             4059792
count_avl_en_d           7364664
count_avl_ex_d           7364664
count_anpr_d             9646200
karmnd_dr_mhl_shghl_d          0
veh_own_d                      0
n_bussi_unit_d                 0
park_area_d                    0
area_d                         0
office_land_use_d              0
n_office_d                     0
commercial_unit_d              0
n_commercial_d                 0
schl_d                         0
dtype: int64

我运行此代码用于估算数据集中的缺失值:

from impyute.imputation.cs import mice

imputed_train_data = mice(X.values)

这是我第一次使用鼠标,我无法估计 运行 所需的时间。我在 8 天前进行了此代码,它仍然是 运行ning。

我找不到关于老鼠 运行 时间的任何信息。我只知道“它很慢”。 如果任何对这个主题有经验的人可以估计时间或考虑到大数据集提出更快的替代方案,我将不胜感激。

根据 docs mice 运行直至收敛,收敛定义为 所有 估算值的连续更新之间的变化小于 10%。这意味着它何时停止是不可预测的。我的直觉会说 none 的插补更新小于 10% 的概率变得非常小,并且有大量缺失值。

看到 source code 实际上很简单,您可以编写自己的版本来限制迭代次数。似乎源代码中的一条评论实际上表明在某些时候原始实现就是这种情况:

# Step 5: Repeat step 2 - 4 until convergence (the 100 is arbitrary)

您可以将 while all(converged): 替换为 for _ in range(max_iterations):