Scipy:加快核密度估计的score_sample方法?



我试图使用核密度估计获得观察到的概率密度。下面是我使用kde的方法:

from sklearn.neighbors import KernelDensity
kde = KernelDensity().fit(sample)

问题是,当我试图得到每个点

的概率密度时
kde_result = kde.score_samples(sample)

速度非常慢。我怎样才能加快速度呢?

样本由300,000 (x,y)点组成。

如果有人正在寻找这个问题的答案,这里就解决了。这里描述了你可以很容易地通过多处理并行化计算来加速执行。

这段代码将完成这项工作(也来自相同的答案):

import numpy as np
import multiprocessing
from sklearn.neighbors import KernelDensity
def parrallel_score_samples(kde, samples, thread_count=int(0.875 * multiprocessing.cpu_count())):
    with multiprocessing.Pool(thread_count) as p:
        return np.concatenate(p.map(kde.score_samples, np.array_split(samples, thread_count)))
kde = KernelDensity(bandwidth=2.0,atol=0.0005,rtol=0.01).fit(sample) 
kde_result = parrallel_score_samples(kde, sample)

相关内容

  • 没有找到相关文章

最新更新