微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决小鼠插补的运行时间估计?

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

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

解决方法

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

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

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

您可以将 mice 替换为 while all(converged):

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。