numpy.random.RandomState.multivariate_normal
-
RandomState.multivariate_normal(mean, cov[, size]) -
Генерация случайных выборок из многомерного нормального распределения.
Многомерное нормальное распределение (мультинормальное или гауссово) — это обобщение одномерного нормального распределения на многомерный случай. Такое распределение задаётся своим средним значением и матрицей ковариации. Эти параметры аналогичны среднему значению (среднему или «центру») и дисперсии (стандартному отклонению или «ширине», возведённому в квадрат) одномерного нормального распределения.
Параметры: mean : одномерный массив_подобный, длиной N
Среднее значение N-мерного распределения.
cov : двумерный массив_подобный, формы (N, N)
Матрица ковариации распределения. Она должна быть симметричной и положительно полуопределённой для корректной генерации выборок.
size : целое число или кортеж целых чисел, необязательно
При задании, например, размера
(m,n,k), генерируетсяm*n*kвыборок и упаковывается вm-строчныйn-столбцовыйkмассив. Поскольку каждая выборкаN-мерна, форма выходного массива равна(m,n,k,N). Если размер не указан, возвращается одна выборка (N-мерная).Возвращает: 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()Обратите внимание, что матрица ковариации должна быть положительно полуопределённой (или неотрицательно определённой). В противном случае поведение этого метода не определено, и обратная совместимость не гарантируется.
Ссылки
[R170] Papoulis, A., «Probability, Random Variables, and Stochastic Processes», 3-е изд., Нью-Йорк: McGraw-Hill, 1991. [R171] Duda, R. O., Hart, P. E., and Stork, D. G., «Pattern Classification», 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]
© 2008–2016 NumPy Developers
Licensed under the NumPy License.
https://docs.scipy.org/doc/numpy-1.10.1/reference/generated/numpy.random.RandomState.multivariate_normal.html