numpy.random.mtrand.RandomState.multivariate_normal
метод
-
RandomState.multivariate_normal(mean, cov, size=None, check_valid='warn', tol=1e-8) -
Генерировать случайные выборки из многомерного нормального распределения.
Многомерное нормальное, многомерное или гауссово распределение является обобщением одномерного нормального распределения на более высокие размерности. Такое распределение задается его средним значением и ковариационной матрицей. Эти параметры аналогичны среднему (среднему или «центру») и дисперсии (среднеквадратичному отклонению или «ширине» в квадрате) одномерного нормального распределения.
Параметры: -
mean : 1-D array_like, of length N -
Среднее значение N-мерного распределения.
-
cov : 2-D array_like, of shape (N, N) -
Ковариационная матрица распределения. Она должна быть симметричной и положительно-полуопределенной для правильной выборки.
-
size : int or tuple of ints, optional -
При заданной форме, например,
(m,n,k), генерируетсяm*n*kвыборок и упаковываются вm-на-n-на-kрасположение. Поскольку каждая выборкаN-мерная, результирующая форма равна(m,n,k,N). Если форма не указана, возвращается одна (N-D) выборка. -
check_valid : { ‘warn’, ‘raise’, ‘ignore’ }, optional -
Поведение, когда ковариационная матрица не является положительно полуопределенной.
-
tol : float, optional -
Допуск при проверке сингулярных значений в ковариационной матрице. cov преобразуется в double перед проверкой.
Возвращает: -
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()Обратите внимание, что ковариационная матрица должна быть положительно полуопределенной (также известна как неотрицательно-определенная). В противном случае поведение этого метода не определено, и обратная совместимость не гарантируется.
Ссылки
[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–2019 NumPy Developers
Licensed under the 3-clause BSD License.
https://docs.scipy.org/doc/numpy-1.17.0/reference/random/generated/numpy.random.mtrand.RandomState.multivariate_normal.html