Spec-Zone.ru › NumPy 1.20

numpy.random.RandomState.multivariate_normal

метод

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

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

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

Примечание

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

Параметры
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–2021 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/1.20/reference/random/generated/numpy.random.RandomState.multivariate_normal.html

Spec-Zone.ru

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