【问题标题】:Run time estimation of mice imputation?小鼠插补的运行时间估计?
【发布时间】:2021-07-02 00:23:03
【问题描述】:

我使用小鼠插补来填充机器学习数据集的缺失值。数据集很大,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 天前执行了此代码,它仍在运行。

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

【问题讨论】:

    标签: python machine-learning missing-data imputation


    【解决方案1】:

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

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

    #第5步:重复第2-4步直到收敛(100是任意的)

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

    【讨论】:

      猜你喜欢
      • 2019-08-04
      • 1970-01-01
      • 2021-08-25
      • 2012-02-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-24
      • 2021-06-29
      相关资源
      最近更新 更多