Spec-Zone.ru › NumPy 1.18

numpy.random.RandomState.multivariate_normal

метод

RandomState.multivariate_normal(mean, cov, size=None, check_valid='warn', tol=1e-8)

Генерирует случайные выборки из многомерного нормального распределения.

Многомерное нормальное, или гауссово, распределение является обобщением одномерного нормального распределения на случай большей размерности. Такое распределение задаётся средним значением и ковариационной матрицей. Эти параметры аналогичны среднему (среднему значению или «центру») и дисперсии (стандартному отклонению или «ширине» в квадрате) одномерного нормального распределения.

Примечание

Новый код должен использовать метод multivariate_normal экземпляра default_rng(); см. random-quick-start.

Параметры
mean1-D array_like, of length N

Среднее значение N-мерного распределения.

cov2-D array_like, of shape (N, N)

Матрица ковариаций распределения. Она должна быть симметричной и положительно полуопределённой для корректной генерации выборок.

sizeint or tuple of ints, optional

Указание формы, например (m,n,k), генерирует m*n*k выборок, упакованных в массив размером m×n×k. Поскольку каждая выборка имеет N размерность, форма выходных данных будет (m,n,k,N). Если размерность не указана, возвращается одна (N-мерная) выборка.

check_valid{ ‘warn’, ‘raise’, ‘ignore’ }, optional

Поведение при не положительно полуопределённой матрице ковариаций.

tolfloat, optional

Пороговое значение при проверке сингулярных значений в матрице ковариаций. Матрица cov приводится к типу double перед проверкой.

Возвращаемое значение
outndarray

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

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

См. также

Generator.multivariate_normal

который следует использовать в новом коде.

Примечания

Среднее значение — это координата в N-мерном пространстве, которая представляет положение, где вероятнее всего будут сгенерированы выборки. Это аналогично пику кривой Гаусса для одномерного нормального распределения.

Ковариация указывает на степень, в которой две переменные изменяются совместно. Из многомерного нормального распределения мы получаем N-мерные выборки, X = [x_1, x_2, ... x_N]. Элемент ковариационной матрицы C_{ij} представляет ковариацию между x_i и x_j. Элемент C_{ii} представляет дисперсию x_i (т. е. её «разброс»).

Вместо указания полной ковариационной матрицы часто используются такие приближения:

  • Сферическая ковариация (cov является кратным единичной матрице)
  • Диагональная ковариация (cov имеет неотрицательные элементы, расположенные только на диагонали)

Эта геометрическая закономерность видна на графике двухмерных сгенерированных точек:

>>> mean = [0, 0]
>>> cov = [[1, 0], [0, 100]]  # diagonal covariance

Диагональная ковариация означает, что точки ориентированы вдоль осей x или y:

>>> import matplotlib.pyplot as plt
>>> x, y = np.random.multivariate_normal(mean, cov, 5000).T
>>> plt.plot(x, y, 'x')
>>> plt.axis('equal')
>>> plt.show()

Обратите внимание, что матрица ковариаций должна быть положительно полуопределённой (также называется неотрицательно определённой). В противном случае поведение этого метода не определено, и обратная совместимость не гарантируется.

Ссылки

1

Papoulis, A., “Probability, Random Variables, and Stochastic Processes,” 3rd ed., New York: McGraw-Hill, 1991.

2

Duda, R. O., Hart, P. E., and Stork, D. G., “Pattern Classification,” 2nd ed., New York: Wiley, 2001.

Примеры

>>> mean = (1, 2)
>>> cov = [[1, 0], [0, 1]]
>>> x = np.random.multivariate_normal(mean, cov, (3, 3))
>>> x.shape
(3, 3, 2)

Следующее утверждение, вероятно, верно, поскольку 0.6 примерно вдвое больше стандартного отклонения:

>>> list((x[0,0,:] - mean) < 0.6)
[True, True] # random

© 2005–2020 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/1.18/reference/random/generated/numpy.random.RandomState.multivariate_normal.html

Spec-Zone.ru

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