我使用老鼠插补来填充机器学习数据集的缺失值。数据集很大,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
mice
运行直到收敛,收敛定义为所有插补值的连续更新之间的变化小于10%。这意味着它何时停止是不可预测的。我的直觉是,插补更新无小于10%的概率变得非常小,有大量缺失值鉴于source code实际上相当简单,您可以编写自己的版本来限制迭代次数。似乎源代码中的一条评论实际上表明,在某些情况下,原始实现就是这样的:
您可以将
while all(converged):
替换为for _ in range(max_iterations):
相关问题 更多 >
编程相关推荐