Расхождение KL между двумя наборами данных разной длины с использованием scipy

#python #scipy

#python #scipy

Вопрос:

Я пытаюсь вычислить расхождение KL, используя функцию энтропии scipy. https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.entropy.html

 from scipy.stats import entropy
data_a = np.array([176,489,7])
data_b = np.array([84,86,47,18,99,26,50,53,76,27])
entropy(data_a, data_b)
  

Я получил следующую ошибку. Как мне следует поступить?

 ---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-7-d8fef5634e56> in <module>
----> 1 en = entropy(data_real, data_crowd)

/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/scipy/stats/_distn_infrastructure.py in entropy(pk, qk, base)
   2548         qk = asarray(qk)
   2549         if len(qk) != len(pk):
-> 2550             raise ValueError("qk and pk must have same length.")
   2551         qk = 1.0*qk / np.sum(qk, axis=0)
   2552         vec = rel_entr(pk, qk)

ValueError: qk and pk must have same length.
  

Я использую macOS 10.14.5, python 3.7.2 и scipy 1.2.1.

Комментарии:

1. Возвращаемая ошибка довольно ясна: data_a и data_b должны иметь одинаковую длину.

2. Спасибо за ваш комментарий. Могу ли я рассчитать расхождение KL между двумя наборами данных разной длины?

3. Находятся ли ваши наборы данных в одном и том же диапазоне случайной величины? В противном случае расхождение KL даже не определено

4. Спасибо за вашу информацию. Моими наборами данных являются data_a = np.array([176,489,7]) и data_b = np.array([84,86,47,18,99,26,50,53,76,27]). Я понимаю, что расхождение KL даже не определено.