def log_marg_k(self, k):
"""
Return the log marginal probability of the data vectors assigned to
component `k`.
The log marginal probability p(X) = p(x_1, x_2, ..., x_N) is returned
for the data vectors assigned to component `k`. See (266) in Murphy's
bayesGauss notes, p. 21.
"""
k_N = self.prior.k_0 + self.counts[k]
v_N = self.prior.v_0 + self.counts[k]
m_N = self.m_N_numerators[k]/k_N
S_N = self.S_N_partials[k] - k_N*np.outer(m_N, m_N)
i = np.arange(1, self.D + 1, dtype=np.int)
return (
- self.counts[k]*self.D/2.*self._cached_log_pi
+ self.D/2.*math.log(self.prior.k_0) - self.D/2.*math.log(k_N)
+ self.prior.v_0/2.*slogdet(self.prior.S_0)[1]
- v_N/2.*slogdet(S_N)[1]
+ np.sum(
self._cached_gammaln_by_2[v_N + 1 - i] -
self._cached_gammaln_by_2[self.prior.v_0 + 1 - i]
)
)
评论列表
文章目录