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-мерные выборки,
. Элемент ковариационной матрицы
представляет собой ковариацию
и
. Элемент
— это дисперсия
(т.е. её «разброс»).
Вместо указания полной ковариационной матрицы можно использовать популярные приближения:
- Сферическая ковариация (
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