numpy.random.multivariate_normal
-
numpy.random.multivariate_normal(mean, cov[, size, check_valid, tol]) -
Генерация случайных выборок из многомерного нормального распределения.
Многомерное нормальное, или гауссово, распределение — это обобщение одномерного нормального распределения на многомерный случай. Такое распределение задаётся средним значением и ковариационной матрицей. Эти параметры аналогичны среднему значению (среднему арифметическому или «центру») и дисперсии (квадрату стандартного отклонения или «ширины») одномерного нормального распределения.
Параметры: mean : 1-D array_like, длиной N
Среднее значение N-мерного распределения.
cov : 2-D array_like, формы (N, N)
Ковариационная матрица распределения. Она должна быть симметричной и положительно полуопределённой для корректной генерации выборок.
size : int или кортеж из целых чисел, необязательно
При задании, например, формы
(m,n,k), генерируетсяm*n*kвыборок и упаковывается в структуруmнаnнаkэлементов. Так как каждая выборка имеетNразмерность, форма выходных данных равна(m,n,k,N). Если форма не задана, возвращается одна (N-D) выборка.check_valid : { ‘warn’, ‘raise’, ‘ignore’ }, необязательно
Поведение при невыполнении условия положительной полуопределённости ковариационной матрицы.
tol : float, необязательно
Пороговое значение при проверке сингулярных значений ковариационной матрицы.
Возвращаемое значение: out : ndarray
Сгенерированные выборки, формы size, если она была задана. Если нет, форма равна
(N,).Другими словами, каждый элемент
out[i,j,...,:]представляет собой N-мерное значение, взятое из распределения.Примечания
Среднее значение — это координата в N-мерном пространстве, которая показывает область, где наиболее вероятны точки выборки. Это аналогично пику кривой Гаусса для одномерного нормального распределения.
Ковариация показывает, как сильно изменяются две переменные вместе. Из многомерного нормального распределения мы получаем N-мерные выборки,
. Элемент ковариационной матрицы
является ковариацией
и
. Элемент
— дисперсия
(т.е. её «разброс»).
Вместо указания полной ковариационной матрицы можно использовать популярные приближения:
- Сферическая ковариация (
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()Обратите внимание, что ковариационная матрица должна быть положительно полуопределённой (т.е. неотрицательно определённой). В противном случае поведение этого метода не определено, и обратная совместимость не гарантируется.
Ссылки
[R250] Papoulis, A., “Probability, Random Variables, and Stochastic Processes,” 3rd ed., New York: McGraw-Hill, 1991. [R251] 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.14.5/reference/generated/numpy.random.multivariate_normal.html