создание многомерного асимметричного нормального распределения Python - PullRequest
0 голосов
/ 24 октября 2018

Как я могу создать многомерную наклонную нормальную функцию, где затем, вводя точки x и y, мы можем создать диаграмму поверхности в 3d (координаты x, y и z)

1 Ответ

0 голосов
/ 24 октября 2018

Вы можете добавить направление к многомерному нормальному распределению, добавив сигма-ковариационную матрицу:

import numpy as np
from scipy.stats import multivariate_normal

mu = [20,20] # center of distribution.
sigma_size_top, sigma_size_bot = np.random.uniform(5, 20, size=2)
cov_max = np.sqrt(sigma_size_top * sigma_size_bot) * 0.9 # Cov max can't be larger than sqrt of the other elements
sigma_cov = np.random.uniform(-cov_max, cov_max)
sigma = np.array([[sigma_size_top, sigma_cov],[sigma_cov, sigma_size_bot]])

и затем передайте ее в multivariate_normal:

dist = multivariate_normal(mu, sigma)

Поместите это в2D-отображение:

x = np.linspace(0, 40, 41)
y = x.copy()
xx, yy = np.meshgrid(x, y)
pos = np.empty(xx.shape + (2,))
pos[:, :, 0] = xx
pos[:, :, 1] = yy
my_map = dist.pdf(pos)

После этого у вас будет искаженное многомерное нормальное распределение на матрице.Я предлагаю вам масштабировать эту матрицу, так как значения будут маленькими.

...