Spec-Zone.ru › NumPy 1.15

numpy.random.RandomState.multinomial

RandomState.multinomial(n, pvals, size=None)

Выборка из многочленного распределения.

Многочленное распределение — это многомерное обобщение биномиального распределения. Представьте эксперимент с одним из p возможных исходов. Пример такого эксперимента — бросание игральной кости, где результат может быть от 1 до 6. Каждый образец, выбранный из распределения, представляет n таких экспериментов. Его значения, X_i = [X_0, X_1, ..., X_p], представляют количество раз, когда результат был i.

Параметры:
n : int

Количество экспериментов.

pvals : sequence of floats, length p

Вероятности каждого из p различных исходов. Они должны суммироваться до 1 (однако последний элемент всегда предполагается отвечающим за оставшуюся вероятность, при условии sum(pvals[:-1]) <= 1)).

size : int or tuple of ints, optional

Форма выходных данных. Если заданная форма, например, (m, n, k), то m * n * k выборок генерируется. По умолчанию None, в этом случае возвращается одно значение.

Возвращает:
out : ndarray

Сгенерированные выборки, формы size, если она была указана. Если нет, форма (N,).

Другими словами, каждый элемент out[i,j,...,:] — это N-мерное значение, взятое из распределения.

Примеры

Бросаем игральную кость 20 раз:

>>> np.random.multinomial(20, [1/6.]*6, size=1)
array([[4, 1, 7, 5, 2, 1]])

Она приземлилась 4 раза на 1, 1 раз на 2 и т. д.

Теперь бросаем кость 20 раз, и еще 20 раз:

>>> np.random.multinomial(20, [1/6.]*6, size=2)
array([[3, 4, 3, 3, 4, 3],
       [2, 4, 3, 4, 0, 7]])

Для первого запуска мы бросили 3 раза 1, 4 раза 2 и т. д. Для второго — 2 раза 1, 4 раза 2 и т. д.

Нагруженная кость более склонна к приземлению на 6:

>>> np.random.multinomial(100, [1/7.]*5 + [2/7.])
array([11, 16, 14, 17, 16, 26])

Входные вероятности должны быть нормированы. В качестве реализации, значение последнего элемента игнорируется и предполагается, что оно занимает все оставшиеся вероятности, но на этом не стоит полагаться. Для смещенной монеты, которая имеет вдвое больше веса на одной стороне, чем на другой, выборки должны быть сделаны так:

>>> np.random.multinomial(100, [1.0 / 3, 2.0 / 3])  # RIGHT
array([38, 62])

а не так:

>>> np.random.multinomial(100, [1.0, 2.0])  # WRONG
array([100,   0])

© 2005–2019 NumPy Developers
Licensed under the 3-clause BSD License.
https://docs.scipy.org/doc/numpy-1.15.4/reference/generated/numpy.random.RandomState.multinomial.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API