numpy.random.multivariate_normal
- random.multivariate_normal(mean, cov, size=None, check_valid='warn', tol=1e-8)
-
Генерация случайных выборок из многомерного нормального распределения.
Многомерное нормальное, многонормальное или гауссово распределение — это обобщение одномерного нормального распределения на более высокие измерения. Такое распределение задаётся своим средним значением и матрицей ковариаций. Эти параметры аналогичны среднему (среднему или «центру») и дисперсии (стандартному отклонению или «ширине», возведённой в квадрат) одномерного нормального распределения.
Примечание
Новый код должен использовать метод
multivariate_normalэкземпляраdefault_rng(); см. Быстрый старт.- Параметры
-
- meanОдномерный массив_like длиной N
-
Среднее значение N-мерного распределения.
- covДвумерный массив_like размера (N, N)
-
Матрица ковариаций распределения. Она должна быть симметричной и положительно полуопределённой для корректной генерации выборок.
- sizeЦелое число или кортеж целых чисел, необязательно
-
Если задана форма, например,
(m,n,k), генерируетсяm*n*kвыборок, упакованных вm-на-n-на-kрасположение. Поскольку каждая выборкаN-мерная, форма выходных данных составляет(m,n,k,N). Если форма не задана, возвращается одна (N-мерная) выборка. - check_valid{ ‘warn’, ‘raise’, ‘ignore’ }, необязательно
-
Поведение при не положительно-определённой матрице ковариаций.
- tolЧисло с плавающей запятой, необязательно
-
Порог при проверке сингулярных значений в матрице ковариаций. cov приводится к типу double перед проверкой.
- Возвращаемое значение
-
- outndarray
-
Сгенерированные выборки, с формой size, если она была задана. В противном случае форма составляет
(N,).Другими словами, каждый элемент
out[i,j,...,:]представляет собой N-мерное значение, взятое из распределения.
См. также
Generator.multivariate_normal-
который следует использовать в новом коде.
Примечания
Среднее значение — это координата в N-мерном пространстве, представляющая местоположение, где выборки наиболее вероятно генерируются. Это аналогично пику кривой Гаусса для одномерного или унивариантного нормального распределения.
Ковариация показывает степень, в которой две переменные изменяются вместе. Из многомерного нормального распределения мы выбираем N-мерные выборки \(X = [x_1, x_2, ... x_N]\). Элемент матрицы ковариаций \(C_{ij}\) — это ковариация \(x_i\) и \(x_j\). Элемент \(C_{ii}\) — это дисперсия \(x_i\) (т. е. её «рассеивание»).
Вместо указания полной матрицы ковариаций популярны приближения:
- Сферическая ковариация (
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., “Вероятность, случайные величины и случайные процессы”, 3-е изд., Нью-Йорк: McGraw-Hill, 1991.
- 2
-
Duda, R. O., Hart, P. E., and Stork, D. G., “Классификация по образцам”, 2-е изд., Нью-Йорк: 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–2022 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/1.21/reference/random/generated/numpy.random.multivariate_normal.html