def max_likelihood(self,stateseqs=None,expected_transcounts=None):
trans_counts = sum(expected_transcounts) if stateseqs is None \
else self._count_transitions(stateseqs)
# NOTE: could just call max_likelihood on each trans row, but this way
# it handles a few lazy-initialization cases (e.g. if _row_distns aren't
# initialized)
errs = np.seterr(invalid='ignore',divide='ignore')
trans_matrix = np.nan_to_num(trans_counts / trans_counts.sum(1)[:,na])
np.seterr(**errs)
# all-zero rows get set to uniform
trans_matrix[trans_matrix.sum(1) == 0] = 1./trans_matrix.shape[0]
assert np.allclose(trans_matrix.sum(1),1.)
self.trans_matrix = trans_matrix
return self
评论列表
文章目录