code: def _random_regression_task(
      self,
      num_outputs,
      num_features,
      batch_shape=(),
      weights=None,
      observation_noise_scale=0.1,
      seed=None,
  ):
      design_seed, weights_seed, noise_seed = samplers.split_seed(
          seed, n=3
      )
      batch_shape = list(batch_shape)
  
      design_matrix = samplers.uniform(
          batch_shape + [num_outputs, num_features], seed=design_seed
      )
      if weights is None:
          weights = samplers.normal(
              batch_shape + [num_features], seed=weights_seed
          )
      targets = tf.linalg.matvec(
          design_matrix, weights
      ) + observation_noise_scale * samplers.normal(
          batch_shape + [num_outputs], seed=noise_seed
      )
      return design_matrix, weights, targets
  
imports: from absl.testing import parameterized
  import numpy
  import tensorflow.compat.v2
  from tensorflow_probability.python.distributions import inverse_gamma
  from tensorflow_probability.python.distributions import normal_conjugate_posteriors
  from tensorflow_probability.python.experimental.sts_gibbs import spike_and_slab
  from tensorflow_probability.python.internal import samplers
  from tensorflow_probability.python.internal import test_util
  from tensorflow_probability.python.mcmc.internal import util
label_desc: Use image node_id 3 for calling the SpikeAndSlabTest obj's underlying member method code with example usage: obj._random_regression_task(num_outputs, num_features, batch_shape, weights, observation_noise_scale, seed) and returns: design_matrix,  weights,  targets