code: def bic(self, X):
          
          return (-2 * self.score(X).sum() +
                  self._n_parameters() * np.log(X.shape[0]))
docs: Bayesian information criterion for the current model fit
          and the proposed data
  
          Parameters
          ----------
          X : array of shape(n_samples, n_dimensions)
  
          Returns
          -------
          bic: float (the lower the better)