numpy.random.RandomState.multivariate_normal
-
RandomState.multivariate_normal(mean, cov[, size, check_valid, tol]) -
Генерация случайных выборок из многомерного нормального распределения.
Многомерное нормальное, многомерное или гауссово распределение является обобщением одномерного нормального распределения на более высокие размерности. Такое распределение задается его средним значением и ковариационной матрицей. Эти параметры аналогичны среднему значению (среднему или «центру») и дисперсии (стандартному отклонению или «ширине» в квадрате) одномерного нормального распределения.
Параметры: 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 : float, необязательно
Погрешность при проверке сингулярных значений в ковариационной матрице.
Возвращает: out : ndarray
Сгенерированные выборки, размера size, если он был предоставлен. В противном случае размер равен
(N,).Другими словами, каждый элемент
out[i,j,...,:]является N-мерным значением, сгенерированным из распределения.Примечания
Среднее значение — это координата в 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()Обратите внимание, что ковариационная матрица должна быть положительно полуопределенной (также известной как неотрицательно определенной). В противном случае поведение этого метода неопределенно, и обратная совместимость не гарантируется.
Ссылки
[R179] Papoulis, A., «Вероятность, случайные величины и случайные процессы», 3-е изд., Нью-Йорк: McGraw-Hill, 1991. [R180] 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]
- Сферическая ковариация (
© 2005–2019 NumPy Developers
Licensed under the 3-clause BSD License.
https://docs.scipy.org/doc/numpy-1.14.5/reference/generated/numpy.random.RandomState.multivariate_normal.html