Python多处理,一维内核密度估计

时间:2019-02-24 16:24:16

标签: python multiprocessing kernel-density

所以我一直在使用KDE一段时间,对于行大小为100,000或更大的数据集,它的速度非常慢。我一直在执行我的代码,如下所示:

def KernelFit(data):
     # compute bandwidth
     h = 1.06 * np.std(data)*data.shape[0]**(-1/5)
     kde = KernelDensity(kernel='gaussian', bandwidth = h ).fit(data)

     return np.exp(kde.score_samples(data))

我尝试使用以下多种处理并行化进程:

   def ParallelKernel(data):
        h = 1.06 * np.std(data)*data.shape[0]**(-1/5)
        p = Pool()
        target = data
        func = partial(ProbFunction, h, data)
        pdfvals = p.map(func,target)
        return pdfvals

   def ProbFunction( h, data, t):
       ProbVal = 0
       for i in range(data.shape[0]):
                ProbVal += GaussKernel(t, data[i], h)
       return ProbVal/data.shape[0]



  def GaussKernel(t, x, h):
       Value = np.exp(-1 * (t - x)**2 / h)
       return Value

但是,多进程代码要慢20倍。谁能告诉我原因和方式?以及是否有更快的方法来处理这个问题?

0 个答案:

没有答案