def _train(self, num_train_inst): ''' Train a Hidden Markov Model with differnt learning algorithms ''' num_train_inst = min(num_train_inst, self._training_data[0].shape[0]) training_data = self._training_data[0][:num_train_inst] pprint("=" * 50) pprint("Training set length: %d" % num_train_inst) # Spectral learning algorithm start_time = time.time() self._sl_learner = SLHMM(self._num_hidden, self._num_observ) self._sl_learner.fit([training_data]) end_time = time.time() pprint("Time used for Spectral Learner: %f" % (end_time - start_time)) sl_time = end_time - start_time # Expectation Maximization algorithm #self._em_learners = [] em_times = np.zeros(self._num_em_restarts, dtype=np.float) #for i in xrange(self._num_em_restarts): #self._em_learners.append(EMHMM(self._num_hidden, self._num_observ)) #start_time = time.time() #self._em_learners[i].fit([training_data], max_iters=20, verbose=True) #end_time = time.time() #pprint("Time used for Expectation Maximization: %f" % (end_time - start_time)) #em_times[i] = end_time - start_time return (sl_time, np.mean(em_times))
def test_slfit(self): sequences = io.load_sequences(self._train_filename) hmm = HMM.from_file(self._model_filename) learner = SLHMM(self._num_hidden, self._num_observ) learner.fit(sequences, verbose=True) for sequence in sequences: pprint("True probability: %f" % hmm.predict(sequence)) pprint("Infered probability: %f" % learner.predict(sequence))