numpy.random.multivariate_normal
-
numpy.random.multivariate_normal(mean, cov, size=None, check_valid='warn', tol=1e-8) -
Генерация случайных выборок из многомерного нормального распределения.
Многомерное нормальное, многомерное или гауссово распределение является обобщением одномерного нормального распределения на более высокие размерности. Такое распределение задаётся своим средним значением и ковариационной матрицей. Эти параметры аналогичны среднему (среднему или «центру») и дисперсии (стандартному отклонению или «ширине», в квадрате) одномерного нормального распределения.
Примечание
Новый код должен использовать метод
multivariate_normalэкземпляраdefault_rng(); см.random-quick-start.- Параметры
-
-
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–2020 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/1.19/reference/random/generated/numpy.random.multivariate_normal.html