Spec-Zone.ru › NumPy 1.16

numpy.random.RandomState.multivariate_normal

метод

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

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

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

Параметры:
mean : 1-D array_like, of length N

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

cov : 2-D array_like, of shape (N, N)

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

size : int 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

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

tol : float, optional

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

Возвращает:
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()

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

Ссылки

[1] Papoulis, A., «Вероятность, случайные величины и стохастические процессы», 3-е изд., Нью-Йорк: McGraw-Hill, 1991.
[2] 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]

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

Spec-Zone.ru

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