Spec-Zone.ru › NumPy 1.13

numpy.random.multivariate_normal

numpy.random.multivariate_normal(mean, cov[, size, check_valid, tol])

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

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

Параметры:

mean : одномерный массив_like длиной N

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

cov : двумерный массив_like размера (N, N)

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

size : целое число или кортеж целых чисел, необязательно

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

check_valid : {‘warn’, ‘raise’, ‘ignore’}, необязательно

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

tol : float, необязательно

Допуск при проверке сингулярных значений в ковариационной матрице.

Возвращает:

out : ndarray

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

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

Примечания

Среднее значение — это координата в 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()

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

Ссылки

[R246] Papoulis, A., “Вероятность, случайные величины и случайные процессы,” 3-е изд., Нью-Йорк: McGraw-Hill, 1991.
[R247] Duda, R. O., Hart, P. E., and Stork, D. G., “Классификация образов,” 2-е изд., Нью-Йорк: 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]

© 2008–2017 NumPy Developers
Licensed under the NumPy License.
https://docs.scipy.org/doc/numpy-1.13.0/reference/generated/numpy.random.multivariate_normal.html

Spec-Zone.ru

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