Spec-Zone.ru › NumPy 1.15

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., “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]

© 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.multivariate_normal.html

Spec-Zone.ru

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