def _ll(self, x):
result = 0.0
# P(w|z)
result += self.K * special.gammaln(self.beta * self.K)
result += -np.sum(special.gammaln(np.sum(self.n_z_w, axis=1)))
result += np.sum(special.gammaln(self.n_z_w))
result += -self.V * special.gammaln(self.beta)
# P(z|Lambda)
alpha = self.get_alpha(x)
result += np.sum(special.gammaln(np.sum(alpha, axis=1)))
result += -np.sum(special.gammaln(
np.sum(self.n_m_z+alpha, axis=1)))
result += np.sum(special.gammaln(self.n_m_z+alpha))
result += -np.sum(special.gammaln(alpha))
# P(Lambda)
result += -self.K / 2.0 * np.log(2.0 * np.pi * (self.sigma ** 2))
result += -1.0 / (2.0 * (self.sigma ** 2)) * np.sum(x ** 2)
result = -result
return result
评论列表
文章目录