Рассчитать вектор вероятности по выборочным данным - PullRequest
0 голосов
/ 28 июня 2019

Я хотел бы сравнить два распределения, используя метрику расхождения Дженсена-Шеннона.Для этого мне нужны два вектора вероятности .Из документации scipy.spatial .

scipy.spatial.distance.jensenshannon (p, q, base = None) [источник]

Параметры:

p (N,) array_like left вектор вероятности

q (N,) array_like right вектор вероятности

Вопрос

Как рассчитать векторы вероятности по выборочным данным?

Пример:

from scipy.spatial import distance
import numpy as np

x1 = np.random.normal(size=100)
x2 = np.random.normal(size=100)

p = 

q = 

jsd_metric = distance.jensenshannon(p, q)

Можно ли это сделатьиспользуя scipy.stats.norm.pdf()?

p = scipy.stats.norm.pdf(x1)
q = scipy.stats.norm.pdf(x2)

1 Ответ

1 голос
/ 30 июня 2019

Распределение вероятностей (вектор вероятности в scipy) представляет собой базовое распределение частоты, деленное на количество выборок, поэтому

p = np.histogram(x1)[0] / len(x1)    
q = np.histogram(x2)[0] / len(x2)

Примечание:

np.sum(p) == 1
np.sum(q) == 1
...