Example #1
0
    def setParamsFromCountVec(self, K, N=None):
        """ Set params to reasonable values given counts for each comp.

        Parameters
        --------
        K : int
            number of components
        N : 1D array, size K. optional, default=[1 1 1 1 ... 1]
            size of each component

        Post Condition for VB
        ---------
        Attributes rho/omega are set so q(beta) equals its posterior
        given count vector N.
        """
        self.ClearCache()
        self.K = int(K)
        if N is None:
            N = 1.0 * np.ones(K)
        assert N.ndim == 1
        assert N.size == K
        eta1 = 1 + N
        eta0 = self.gamma + convertToN0(N)
        self.rho = eta1 / (eta1 + eta0)
        self.omega = eta1 + eta0
Example #2
0
def calc_Lalloc_from_count_vec(N_K=None, gamma1=1.0, gamma0=1.0):
	''' Compute allocation-model ELBO term for DP mixture

	Args
	----
	N_K : 1D array, size K
	gamma1 : positive scalar
	gamma0 : positive scalar

	Returns
	-------
	Lalloc : scalar
	'''
	N_K = np.asarray(N_K, dtype=np.float64)
	K = N_K.size
	eta1 = N_K + gamma1
	eta0 = convertToN0(N_K) + gamma0
	return K * c_Beta(gamma1, gamma0) - c_Beta(eta1, eta0)