class_docstr: Hidden Markov Model with Poisson emissions.
  
  Attributes
  ----------
  monitor_ : ConvergenceMonitor
      Monitor object used to check the convergence of EM.
  
  startprob_ : array, shape (n_components, )
      Initial state occupation distribution.
  
  transmat_ : array, shape (n_components, n_components)
      Matrix of transition probabilities between states.
  
  lambdas_ : array, shape (n_components, n_features)
      The expectation value of the waiting time parameters for each
      feature in a given state.
class_docstr_tok: ["Hidden","Markov","Model","with","Poisson","emissions",".","Attributes","--","--","--","--","--","monitor_",":","ConvergenceMonitor","Monitor","object","used","to","check","the","convergence","of","EM",".","startprob_",":","array",",","shape","(","n_components",",",")","Initial","state","occupation","distribution",".","transmat_",":","array",",","shape","(","n_components",",","n_components",")","Matrix","of","transition","probabilities","between","states",".","lambdas_",":","array",",","shape","(","n_components",",","n_features",")","The","expectation","value","of","the","waiting","time","parameters","for","each","feature","in","a","given","state","."]
code: def _do_mstep(self, stats):
      super()._do_mstep(stats)
  
      if "l" in self.params:
          # Based on: Hyvönen & Tolonen, "Bayesian Inference 2019"
          # section 3.2
          # https://vioshyvo.github.io/Bayesian_inference
          alphas, betas = self.lambdas_prior, self.lambdas_weight
          n = stats["post"].sum()
          y_bar = stats["obs"] / stats["post"][:, None]
          # the same as kappa notation (more intuitive) but avoids divide by
          # 0, where:
          # kappas = betas / (betas + n)
          # self.lambdas_ = kappas * (alphas / betas) + (1 - kappas) * y_bar
          self.lambdas_ = (alphas + n * y_bar) / (betas + n)
  
imports: import logging
  import numpy
  from scipy import linalg
  from sklearn import cluster
  from sklearn.utils import check_random_state
  from .None import _emissions, _utils
  from .base import BaseHMM
  from .utils import fill_covars, normalize
label_desc: Use image node_id 4 for calling the PoissonHMM obj's underlying member method code with example usage: obj._do_mstep(stats) without return types