numpy.random.RandomState.multivariate_normal
метод
-
random.RandomState.multivariate_normal(mean, cov, size=None, check_valid='warn', tol=1e-8) -
Генерация случайных выборок из многомерного нормального распределения.
Многомерное нормальное распределение (многомерное или гауссовское распределение) — это обобщение одномерного нормального распределения на многомерный случай. Такое распределение задаётся средним значением и ковариационной матрицей. Эти параметры аналогичны среднему (среднее арифметическое или «центр») и дисперсии (стандартное отклонение или «ширина» в квадрате) одномерного нормального распределения.
Примечание
Новый код должен использовать метод
multivariate_normalэкземпляраdefault_rng(); см. Быстрый старт.- Параметры
-
-
mean1-D array_like, of length N -
Среднее значение N-мерного распределения.
-
cov2-D array_like, of shape (N, N) -
Ковариационная матрица распределения. Она должна быть симметричной и положительно полуопределённой для правильной генерации выборок.
-
sizeint 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 -
Поведение при не положительно полуопределённой ковариационной матрице.
-
tolfloat, optional -
Допуск при проверке сингулярных значений в ковариационной матрице. cov приводится к типу double перед проверкой.
-
- Возвращает
-
-
outndarray -
Сгенерированные выборки, формы size, если она была указана. Если нет, форма равна
(N,).Другими словами, каждый элемент
out[i,j,...,:]представляет собой N-мерное значение, сгенерированное из распределения.
-
См. также
-
Generator.multivariate_normal -
который следует использовать в новом коде.
Примечания
Среднее значение — это координата в 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] # random
© 2005–2021 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/1.20/reference/random/generated/numpy.random.RandomState.multivariate_normal.html