我使用来自scipy.stats.gaussian_kde
的scipy
方法从数据中生成随机样本。
很好用!我现在发现的是,这个方法也有内置的函数来计算给定点集(我的数据)的概率密度函数。
I would like to know how it calculates the pdf provided a set of points.
下面是一个小例子:
import numpy as np
import scipy.stats
from scipy import stats
def getDistribution1(data):
kernel = stats.gaussian_kde(data,bw_method=0.06)
class rv(stats.rv_continuous):
def _rvs(self, *x, **y):
return kernel.resample(int(self._size)) #random variates
def _cdf(self, x):
return kernel.integrate_box_1d(0,max(x)) #Integrate pdf between two bounds (-inf to x here!)
def _pdf(self, x):
return kernel.evaluate(x) #Evaluate the estimated pdf on a provided set of points
return rv(name='kdedist')
test_data = np.random.random(100) # random test data
distribution_data = getDistribution1(test_data)
pdf_data = distribution_data.pdf(test_data) # the pdf of the data
在上面的代码中,有三种方法,
rvs
cdf
,它是从0到最大值的pdf的积分(数据)pdf
是数据的pdf。我需要这个pdf的原因是因为现在我试图根据概率为我的数据计算权重。,这样我就可以给我的每个数据点一个概率,然后我可以用它作为我的权重。
我也想知道,从这里开始,我应该如何计算我的权重?
请原谅我在交叉验证中问了同样的问题,似乎没有反应!
发布于 2015-05-12 09:47:41
在线文档有一个指向源代码的链接,用于gaussian_kde
的源代码如下:https://github.com/scipy/scipy/blob/v0.15.1/scipy/stats/kde.py#L193
https://stackoverflow.com/questions/30186868
复制相似问题