Я использую метод 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 до max (данные)pdf
который является pdf данных
Причина, по которой мне нужен этот PDF-файл, заключается в том, что сейчас я пытаюсь рассчитать веса для своих данных на основе вероятности. Чтобы я мог присвоить каждой точке данных вероятность, которую затем мог бы использовать в качестве веса.
Я также хотел бы знать отсюда, как мне следует рассчитать свой вес?
P.S. Простите, что задаю тот же вопрос в перекрестной проверке, похоже, ответа нет!