Существует постоянная дискуссия о текущей np.random.dirichlet
функции, так как она не работает при малых значениях параметров:np.random.dirichlet с малым параметром: встраивать будущее решение в текущем NumPy
In [1]: import numpy as np
In [2]: np.random.dirichlet(np.ones(3)*.00001)
---------------------------------------------------------------------------
ZeroDivisionError Traceback (most recent call last)
<ipython-input-2-464b0fe9c6c4> in <module>()
----> 1 np.random.dirichlet(np.ones(3)*.00001)
mtrand.pyx in mtrand.RandomState.dirichlet (numpy/random/mtrand/mtrand.c:25213)()
mtrand.pyx in mtrand.RandomState.dirichlet (numpy/random/mtrand/mtrand.c:25123)()
ZeroDivisionError: float division
Обсуждение можно прочитать here и here и указывает, что это ошибка нормализации. В настоящее время предлагаемое усиление выборки пробоотборников для небольших параметров не может быть объединено в master of numpy по нескольким причинам.
Вопрос: Может ли кто-то предложить другой способ привлечь в питона Дирихле или указать мне решение использовать новый пробник без перекомпилировать NumPy и/или работать на невыпущенной отрасли?
Пробовал ли вы выборку с использованием бета-вариации? Он описан на странице Википедии https://en.wikipedia.org/wiki/Dirichlet_distribution#Random_number_generation –
Как указано в предоставленных ссылках, 'numpy.dirichlet' использует дистрибутив' numpy.beta' для образца. Для небольшого параметра бета возвращает '[Nan, Nan ]' вместо изменения между' [1,0] 'и' [0,1] ' –