numpy.random.RandomState.multivariate_normal
метод
-
RandomState.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.18/reference/random/generated/numpy.random.RandomState.multivariate_normal.html