我现在用的是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
这是PDF的积分从0至最大(数据) -
pdf
是数据的概率密度函数
我需要这个PDF的原因是因为我现在想来计算基于概率我的数据权重 。 所以,我可以给我的每一个数据的点的概率,我可以再为我的权重使用。
我也想从这里知道我应该怎么着手计算我的权重?
PS请原谅我问交叉验证了同样的问题,似乎没有反应!