'E step.
Parameters
X : array-like, shape (n_samples, n_features)
Returns
log_prob_norm : float
Mean of the logarithms of the probabilities of each sample in X
log_responsibility : array, shape (n_samples, n_components)
Logarithm of the posterior probabilities (or responsibilities) of
the point of each sample in X.'

def _e_step(self, X):

    (log_prob_norm, log_resp) = self._estimate_log_prob_resp(X)
    return (np.mean(log_prob_norm), log_resp)
