首页 > 解决方案 > Python 3 - Scipy 和 KDEpy

问题描述

我正在使用 python-3.x 并且我想使用 KDEpy 在提供的一组点上评估估计的 pdf,但我做错了,

我使用了scipy.stats.gaussian_kde并且当我应用 pdf 方法时它很好并且工作得很好,因为我对在提供的一组点上评估估计的 pdf感兴趣。

所以问题是如果我使用 KDEpy FFTKDE,如何从 scipy.stats.kde 获得相同的结果

这是一个描述我正在寻找的小例子:

from scipy.stats.kde import gaussian_kde
data = np.array([[-1.84134663, -1.42036525, -1.38819347],
              [-2.58165693, -2.49423057, -1.57609454],
              [-0.78776371, -0.79168188,  0.21967791],
              [-1.0165618 , -1.78509185, -0.68373997],
              [-1.21764947, -0.43215885, -0.34393573]]) 


my_pdf = gaussian_kde(data.T, bw_method = None  )    
my_pdf1.pdf(data.T)
print (my_pdf1.pdf(data.T)) # here we will Evaluate the estimated pdf on a provided set of points

结果是:

[0.24234078 0.22071922 0.23802877 0.22474656 0.25402297]

如何使用KDEpy FFTKDE获得相同的结果

from KDEpy import FFTKDE
my_pdf2 = FFTKDE(kernel="gaussian").fit(data.T).evaluate()

但我不知道如何在提供的一组点上评估估计的 pdf,类似于scipy.stats.kde with pdf 方法。

标签: python-3.xnumpyscipygaussian

解决方案


您可以使用 eg 创建一个等距网格numpy.linspace并将其传递给.evaluate()

from KDEpy import FFTKDE
import numpy as np
x_grid = np.linspace(-10, 10, num=2**10)
my_pdf = FFTKDE(kernel="gaussian").fit(data.T).evaluate(x_grid)

推荐阅读