Распределение вероятностей многомерной гауссовой смеси в numpy - PullRequest
0 голосов
/ 06 апреля 2020

Я хочу рассчитать ответственность за каждую из точек данных, для заданных MU, SIGMA и PI.

params:
 X = numpy.ndarray[numpy.ndarray[float]] - m x n
 MU = numpy.ndarray[numpy.ndarray[float]] - k x n
 SIGMA = numpy.ndarray[numpy.ndarray[numpy.ndarray[float]]] - k x n x n
 PI = numpy.ndarray[float] - k x 1

returns:
responsibility = numpy.ndarray[numpy.ndarray[float]] - k x m

Я пробовал что-то подобное.

k = 5 (example, i.e number of means or SIGMA(s))
for i in range(k):
        one = 1 / ( ((2* np.pi)**(len(MU[i])/2)) * (np.linalg.det(SIGMA[i])**(1/2)) )
        two = np.exp((-1/2) * ((X-MU[i]).T.dot(np.linalg.inv(SIGMA[i]))).dot((X-MU[i])))
        weighted_normal = PI[i] * part1 * part2

Выше Кажется, что код работает для каждой записи xj в X, которая представляет собой матрицу формы mx n. (т.е. он правильно вычисляет вероятность для одной записи в X, скажем, x). Я хочу эффективно получить его для всех записей в X, а затем вернуться. Пробовал разные способы, но кроме запуска для l oop на всех значениях X я не могу понять это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...