예제 #1
0
    def __init__(self,
                 num_states=None,
                 alpha=None,
                 alphav=None,
                 trans_matrix=None):
        self.N = num_states

        if trans_matrix is not None:
            self._row_distns = [
                Multinomial(alpha_0=alpha,
                            K=self.N,
                            alphav_0=alphav,
                            weights=row) for row in trans_matrix
            ]
        elif None not in (alpha, self.N) or (alphav is not None
                                             and alphav.ndim < 2):
            self._row_distns = [
                Multinomial(alpha_0=alpha, K=self.N, alphav_0=alphav)
                for n in range(self.N)
            ]  # sample from prior
        # for the case where we pass a matrix for the alpha (used mainly for adding the stickiness)
        elif None not in (alpha, self.N) or (alphav is not None
                                             and alphav.ndim == 2):
            self._row_distns = [
                Multinomial(alpha_0=alpha, K=self.N, alphav_0=alphav[n, :])
                for n in range(self.N)
            ]  # sample from prior
예제 #2
0
    def __init__(self,num_states=None,alpha=None,alphav=None,trans_matrix=None):
        self.N = num_states

        if trans_matrix is not None:
            self._row_distns = [Multinomial(alpha_0=alpha,K=self.N,alphav_0=alphav,
                weights=row) for row in trans_matrix]
        elif None not in (alpha,self.N) or alphav is not None:
            self._row_distns = [Multinomial(alpha_0=alpha,K=self.N,alphav_0=alphav)
                    for n in xrange(self.N)] # sample from prior
예제 #3
0
 def trans_matrix(self, trans_matrix):
     N = self.N = trans_matrix.shape[0]
     if self.alphav.ndim < 2:
         self._row_distns = \
                 [Multinomial(alpha_0=self.alpha,K=N,alphav_0=self.alphav,weights=row)
                         for row in trans_matrix]
     elif self.alphav.ndim == 2:
         self._row_distns = \
                 [Multinomial(alpha_0=self.alpha,K=N,alphav_0=self.alphav[n,:],weights=row)
                         for n, row in enumerate(trans_matrix)]
예제 #4
0
    def __init__(self,gamma,alpha,num_states=None,beta=None,trans_matrix=None):
        if num_states is None:
            assert beta is not None or trans_matrix is not None
            self.N = len(beta) if beta is not None else trans_matrix.shape[0]
        else:
            self.N = num_states

        self.alpha = alpha
        if type(gamma) in [int,float]:
            self.beta_obj = Multinomial(alpha_0=gamma,K=self.N,weights=beta)
        else:
            self.beta_obj = Multinomial(alphav_0=gamma,K=self.N,weights=beta)

        super(_WeakLimitHDPHMMTransitionsBase,self).__init__(
                num_states=self.N,alpha=alpha,
                alphav=alpha*self.beta,trans_matrix=trans_matrix)
예제 #5
0
 def trans_matrix(self, trans_matrix):
     N = self.N = trans_matrix.shape[0]
     self._row_distns = [
         Multinomial(alpha_0=self.alpha,
                     K=N,
                     alphav_0=self.alphav,
                     weights=row) for row in trans_matrix
     ]