'Monitor the lower bound during iteration
Debug method to help see exactly when it is failing to converge as
expected.
Note: this is very expensive and should not be used by default.'

def _monitor(self, X, z, n, end=False):

    if (self.verbose > 0):
        print(('Bound    after    updating    %8s:    %f' % (n, self.lower_bound(X, z))))
        if end:
            print('Cluster    proportions:', self.gamma_.T[1])
            print('covariance_type:', self.covariance_type)
