Example #1
0
 def testWithMixgaussInit(self):
     
     LL, prior1, transmat1, mu1, Sigma1, mixmat1 = mhmm_em(data=self.obs, 
                                                           prior=self.prior0, 
                                                           transmat=self.transmat0, 
                                                           mu=self.mu0, 
                                                           Sigma=self.Sigma0, 
                                                           mixmat=self.mixmat0)
Example #2
0
 def testStateHiddenParams(self):
     
     LL, prior1, transmat1, mu1, Sigma1, mixmat1 = mhmm_em(data=self.obs, prior=self.prior0, transmat=self.transmat0, mu=self.mu, Sigma=self.Sigma,
                               mixmat=self.mixmat)
     
     assert np.all(np.diff(LL)>=-1e-3) # Likelihood is increasing
     assert np.all(np.abs(self.prior-prior1)<1e-3)
     assert np.all(np.abs(self.transmat-transmat1)<1e-3)
Example #3
0
    def testWithMixgaussInit(self):

        LL, prior1, transmat1, mu1, Sigma1, mixmat1 = mhmm_em(
            data=self.obs,
            prior=self.prior0,
            transmat=self.transmat0,
            mu=self.mu0,
            Sigma=self.Sigma0,
            mixmat=self.mixmat0)
Example #4
0
 def testStateEmissionParams(self):
     
     LL, prior1, transmat1, mu1, Sigma1, mixmat1 = mhmm_em(data=self.obs, prior=self.prior, transmat=self.transmat, mu=self.mu0, Sigma=self.Sigma0,
                               mixmat=self.mixmat0)
     
     assert np.all(np.diff(LL)>=-1e-3) # Likelihood is increasing
     assert np.all(np.abs(mu1-self.mu)<1e-1)
     assert np.all(np.abs(Sigma1-self.Sigma)<1e-1)
     assert np.all(np.abs(mixmat1-self.mixmat)<1e-1)
Example #5
0
    def testStateHiddenParams(self):

        LL, prior1, transmat1, mu1, Sigma1, mixmat1 = mhmm_em(
            data=self.obs,
            prior=self.prior0,
            transmat=self.transmat0,
            mu=self.mu,
            Sigma=self.Sigma,
            mixmat=self.mixmat)

        assert np.all(np.diff(LL) >= -1e-3)  # Likelihood is increasing
        assert np.all(np.abs(self.prior - prior1) < 1e-3)
        assert np.all(np.abs(self.transmat - transmat1) < 1e-3)
Example #6
0
    def testStateEmissionParams(self):

        LL, prior1, transmat1, mu1, Sigma1, mixmat1 = mhmm_em(
            data=self.obs,
            prior=self.prior,
            transmat=self.transmat,
            mu=self.mu0,
            Sigma=self.Sigma0,
            mixmat=self.mixmat0)

        assert np.all(np.diff(LL) >= -1e-3)  # Likelihood is increasing
        assert np.all(np.abs(mu1 - self.mu) < 1e-1)
        assert np.all(np.abs(Sigma1 - self.Sigma) < 1e-1)
        assert np.all(np.abs(mixmat1 - self.mixmat) < 1e-1)
Example #7
0
    def fit(self, obs):
        obs = self._convertObs(obs)

        O = obs[0].shape[0]
        M = self.n_mix
        Q = self.n_components

        if 's' in self.init_params:
            self.startprob_, _ = normalise(self.startprob_)

        if 't' in self.init_params:
            self.transmat_, _ = mk_stochastic(self.transmat_)

        if 'm' in self.init_params or 'c' in self.init_params:
            mu0, Sigma0, weights0 = mixgauss_init(
                Q * M, obs, cov_type=self._covariance_type)

            if 'm' in self.init_params:
                self.means_ = np.transpose(np.reshape(mu0, (O, M, Q)),
                                           (0, 2, 1))

            if 'c' in self.init_params:
                self.covars_ = np.transpose(np.reshape(Sigma0, (O, O, M, Q)),
                                            (0, 1, 3, 2))

        mixmat0, _ = mk_stochastic(np.random.rand(Q, M))

        self.LL, prior1, transmat1, mu1, Sigma1, mixmat1 = mhmm_em(
            data=obs,
            prior=self.startprob_,
            transmat=self.transmat_,
            mu=self.means_,
            Sigma=self.covars_,
            mixmat=mixmat0,
            max_iter=self.n_iter,
            thresh=self.thresh,
            cov_type=self._covariance_type,
            adj_trans='t' in self.params,
            adj_mix='w' in self.params,
            adj_mu='m' in self.params,
            adj_Sigma='c' in self.params)

        self.startprob_ = prior1
        self.transmat_ = transmat1
        self.means_ = mu1
        self.covars_ = Sigma1
        self.weights_ = mixmat1
Example #8
0
    def fit(self, obs):
        obs = self._convertObs(obs)

        O = obs[0].shape[0]
        M = self.n_mix
        Q = self.n_components

        if "s" in self.init_params:
            self.startprob_, _ = normalise(self.startprob_)

        if "t" in self.init_params:
            self.transmat_, _ = mk_stochastic(self.transmat_)

        if "m" in self.init_params or "c" in self.init_params:
            mu0, Sigma0, weights0 = mixgauss_init(Q * M, obs, cov_type=self._covariance_type)

            if "m" in self.init_params:
                self.means_ = np.transpose(np.reshape(mu0, (O, M, Q)), (0, 2, 1))

            if "c" in self.init_params:
                self.covars_ = np.transpose(np.reshape(Sigma0, (O, O, M, Q)), (0, 1, 3, 2))

        mixmat0, _ = mk_stochastic(np.random.rand(Q, M))

        self.LL, prior1, transmat1, mu1, Sigma1, mixmat1 = mhmm_em(
            data=obs,
            prior=self.startprob_,
            transmat=self.transmat_,
            mu=self.means_,
            Sigma=self.covars_,
            mixmat=mixmat0,
            max_iter=self.n_iter,
            thresh=self.thresh,
            cov_type=self._covariance_type,
            adj_trans="t" in self.params,
            adj_mix="w" in self.params,
            adj_mu="m" in self.params,
            adj_Sigma="c" in self.params,
        )

        self.startprob_ = prior1
        self.transmat_ = transmat1
        self.means_ = mu1
        self.covars_ = Sigma1
        self.weights_ = mixmat1