def METHOD_NAME(self):
    """Compute data covariance with the generative model.
    ``cov = components_.T * S**2 * components_ + sigma2 * eye(n_features)``
    where  S**2 contains the explained variances, and sigma2 contains the
    noise variances.
    Returns
    -------
    cov : array, shape=(n_features, n_features)
        Estimated covariance of data.
    """
    components_ = self.components_
    exp_var = self.explained_variance_
    if self.whiten:
        components_ = components_ * np.sqrt(exp_var[:, np.newaxis])
    exp_var_diff = np.maximum(exp_var - self.noise_variance_, 0.)
    cov = np.dot(components_.T * exp_var_diff, components_)
    cov.flat[::len(cov) + 1] += self.noise_variance_  # modify diag inplace
    return cov