sklearn KernelDensity score_samples со значениями больше 0 - PullRequest
0 голосов
/ 23 мая 2019

Я использую функцию sklearn KernelDensity, чтобы оценить плотность, а затем оценить pdf в некоторых точках, используя функцию score_samples, но значения, возвращаемые функцией score_samples, намного больше 0, что не должно иметь место. потому что согласно документации он возвращает log(density) [ Документация : массив оценок журнала (плотности). Они нормализованы, чтобы быть плотностями вероятности, поэтому значения будут низкими для многомерных данных.]

from sklearn.neighbors.kde import KernelDensity
import numpy as np

data = np.random.normal(0, 1, [50, 10]) #50 data points, dimension=10
data_kde = KernelDensity(kernel="gaussian", bandwidth=0.2).fit(data)
output = data_kde.score_samples(data)

#print(output)
output = array([19.94484645, 19.94484645, 19.94484645, 19.94484645, 19.94484645,
       19.94484645, 19.94484645, 19.94484645, 19.94484645, 19.94484645,
       19.94484645, 19.94484645, 19.94484645, 19.94484645, 19.94484645,
       19.94484645, 19.94484645, 19.94484645, 19.94484645, 19.94484645,
       19.94484645, 19.94484645, 19.94484645, 19.94484645, 19.94484645,
       19.94484645, 19.94484645, 19.94484645, 19.94484645, 19.94484645,
       19.94484645, 19.94484645, 19.94484645, 19.94484645, 19.94484645,
       19.94484645, 19.94484645, 19.94484645, 19.94484645, 19.94484645,
       19.94484645, 19.94484645, 19.94484645, 19.94484645, 19.94484645,
       19.94484645, 19.94484645, 19.94484645, 19.94484645, 19.94484645])

Поскольку плотность лежит в [0, 1], log(density) должен находиться между (-Inf, 0] в отличие от 19.9448, показанного выше.

1 Ответ

0 голосов
/ 28 июня 2019

плотности вероятности не должны быть между [0,1]. Они плотности, а не точная вероятность. Страница Википедии дает хороший обзор PDF-файлов.

https://en.wikipedia.org/wiki/Probability_density_function

...