【问题标题】:How does the stats.gaussian_kde method calcute the pdf?stats.gaussian_kde 方法如何计算pdf?
【发布时间】:2015-05-12 17:47:41
【问题描述】:

我正在使用scipy 中的scipy.stats.gaussian_kde 方法从数据中生成随机样本。

效果很好!我现在发现的是,该方法还具有计算给定点集(我的数据)的概率密度函数的内置函数。

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

在上面这段代码中,存在三个方法,

  1. rvs根据数据生成随机样本
  2. cdf 是 pdf 从 0 到 max(data) 的积分
  3. pdf这是数据的pdf

我需要这个 pdf 的原因是因为现在 我正在尝试根据概率为我的数据计算权重这样我就可以给每个数据点一个概率,然后我可以将其用作我的权重。

我也想从这里知道我应该如何计算我的体重?

附:请原谅我在交叉验证中问同样的问题,似乎没有回应!

【问题讨论】:

    标签: python scipy gaussian probability-density


    【解决方案1】:

    在线文档有一个指向源代码的链接,gaussian_kde 在这里:https://github.com/scipy/scipy/blob/v0.15.1/scipy/stats/kde.py#L193

    【讨论】:

    • 感谢源代码,但我不明白的是,我有一个一维数组,而evaluate 函数只为二维数组执行此操作!但我正在为我的数据获取一些 pdf 文件!怎么会这样?我很困惑!
    • 一开始就有一个atleast_2d 呼叫。一般来说,最好问一个实际的、单独的问题。
    猜你喜欢
    • 2015-07-30
    • 2020-03-25
    • 2020-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-19
    • 2013-04-10
    • 2010-10-23
    相关资源
    最近更新 更多