Spec-Zone.ru › NumPy 1.11

numpy.random.RandomState.multivariate_normal

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

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

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

Параметры:

mean : 1-D массив_подобный, длины N

Среднее многомерного распределения.

cov : 2-D массив_подобный, формы (N, N)

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

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

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

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

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()

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

Ссылки

[R170] Papoulis, A., “Probability, Random Variables, and Stochastic Processes,” 3rd ed., New York: McGraw-Hill, 1991.
[R171] 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]

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

Spec-Zone.ru

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