code: def _MakeCorrelatedFeatures(self, means, rho):
      # Make n correlated Gaussian random features, and also compute the
      # theoretical mutual information between the first n-1 features and the last
      # feature.
      np.random.seed(30)
      means = np.array(means)
      n = means.size
      cov = np.ones((n, n)) * rho
      cov[range(n), range(n)] = 1
      dat = np.random.multivariate_normal(means, cov, 50000)
  
      # Theoretical value of the mutual information.
      expected_mi = -0.5 * (
          np.log2(np.linalg.det(cov))
          - np.log2(np.linalg.det(cov[:-1, :-1]))
      )
  
      return [dat[:, i] for i in range(n)], expected_mi
  
imports: from absl.testing import absltest
  from absl.testing import parameterized
  import numpy
  from tensorflow_data_validation.utils import mutual_information_util
label_desc: Use image node_id 1 for calling the RanklabMutualInformationTest obj's underlying member method code with example usage: obj._MakeCorrelatedFeatures(means, rho) and returns: unknown,  expected_mi