Я хочу рассчитать ответственность за каждую из точек данных, для заданных 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 я не могу понять это.