我正在尝试计算相当大的二维数据集的核密度估计值colour the points in a scatter plot。函数scipy.stats.gaussian_kde
需要很长时间,因此我认为我可以使用dask(v0.15.2)来更快地获得结果。但是,我不确定我的方法是否真的加速了。这是一个例子:
import numpy as np
from scipy.stats import gaussian_kde
import dask.bag as db
xy = np.random.rand(2, 1000000)
kde = gaussian_kde(xy)
chunker = (xy[:, i:i+10000] for i in range(100))
compute_job = db.from_sequence(chunker).map(kde)
results = compute_job.compute()
z = np.hstack(results)
这需要超过60小时才能在四核Xeon E5-2609 @ 2.4Hz上完成,数据集为2,677,920个坐标对。我正确使用dask吗?
答案 0 :(得分:0)
不幸的是,Dask在所有情况下都不提供加速。实际上,如果只使用一个输入块执行KDE,你会发现它已经使用了多个内核 - 因此Dask没有备用容量可供选择。
使用大小为2x1000000的内核执行KDE(如卷积)似乎是不明智的,我并不感到惊讶,它花了很长时间。你确定这是你想做的吗?
此外,我可以借此机会考虑使用datashader,它与Dask阵列一起工作,并且包含很好的模糊管道元素。