code: def converged(self):
      # The default ConvergenceMonitor regards some scenarios
      # as "converged" when they have not necessarily converged:
      #
      # 1. exhausting max iterations
      # 2. decreases in log_prob between successive EM iterations
      #
      # This second behaviour should (ignoring numerical problems)
      # never happen if the EM implementation is correct. EM is a
      # local optimisation method, it may not find a global maxima,
      # but log_prob should always be non-decreasing between each
      # pair of successive iterations.
  
      assert not np.isnan(self.history[-1]), "log_prob must not be nan"
  
      if len(self.history) < 2:
          return False
  
      assert (
          self.history[-1] >= self.history[-2] - self.tol
      ), "log_prob must be non-decreasing"
  
      return self.history[-1] - self.history[-2] < self.tol
  
file_path: hmmlearn/lib/hmmlearn/tests/test_gmm_hmm_multisequence.py
imports: import itertools
  import numpy
  from numpy.testing import assert_allclose
  import pytest
  from hmmlearn import hmm
  from hmmlearn.base import ConvergenceMonitor
label_desc: Use image node_id 1 for calling the StrictMonitor obj's underlying member method code with example usage: obj.converged() and returns: unknown, False