numpy.random.multivariate_normal
-
random.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.multivariate_normal.html