code: def make_regression(
      n_samples=100,
      n_features=100,
      n_informative=10,
      n_targets=1,
      bias=0.0,
      effective_rank=None,
      tail_strength=0.5,
      noise=0.0,
      shuffle=True,
      coef=False,
      random_state=None,
  ):
      """Generate a random regression problem.
  
      The input set can either be well conditioned (by default) or have a low
      rank-fat tail singular profile. See :func:`make_low_rank_matrix` for
      more details.
  
      The output is generated by applying a (potentially biased) random linear
      regression model with `n_informative` nonzero regressors to the previously
      generated input and some gaussian centered noise with some adjustable
      scale.
  
      Read more in the :ref:`User Guide <sample_generators>`.
  
      Parameters
      ----------
      n_samples : int, optional (default=100)
          The number of samples.
  
      n_features : int, optional (default=100)
          The number of features.
  
      n_informative : int, optional (default=10)
          The number of informative features, i.e., the number of features used
          to build the linear model used to generate the output.
  
      n_targets : int, optional (default=1)
          The number of regression targets, i.e., the dimension of the y output
          vector associated with a sample. By default, the output is a scalar.
  
      bias : float, optional (default=0.0)
          The bias term in the underlying linear model.
  
      effective_rank : int or None, optional (default=None)
          if not None:
              The approximate number of singular vectors required to explain most
              of the input data by linear combinations. Using this kind of
              singular spectrum in the input allows the generator to reproduce
              the correlations often observed in practice.
          if None:
              The input set is well conditioned, centered and gaussian with
              unit variance.
  
      tail_strength : float between 0.0 and 1.0, optional (default=0.5)
          The relative importance of the fat noisy tail of the singular values
          profile if `effective_rank` is not None.
  
      noise : float, optional (default=0.0)
          The standard deviation of the gaussian noise applied to the output.
  
      shuffle : boolean, optional (default=True)
          Shuffle the samples and the features.
  
      coef : boolean, optional (default=False)
          If True, the coefficients of the underlying linear model are returned.
  
      random_state : int, RandomState instance or None, optional (default=None)
          If int, random_state is the seed used by the random number generator;
          If RandomState instance, random_state is the random number generator;
          If None, the random number generator is the RandomState instance used
          by `np.random`.
  
      Returns
      -------
      X : array of shape [n_samples, n_features]
          The input samples.
  
      y : array of shape [n_samples] or [n_samples, n_targets]
          The output values.
  
      coef : array of shape [n_features] or [n_features, n_targets], optional
          The coefficient of the underlying linear model. It is returned only if
          coef is True.
      """
      n_informative = min(n_features, n_informative)
      generator = check_random_state(random_state)
  
      if effective_rank is None:
          # Randomly generate a well conditioned input set
          X = generator.randn(n_samples, n_features)
  
      else:
          # Randomly generate a low rank, fat tail input set
          X = make_low_rank_matrix(
              n_samples=n_samples,
              n_features=n_features,
              effective_rank=effective_rank,
              tail_strength=tail_strength,
              random_state=generator,
          )
  
      # Generate a ground truth model with only n_informative features being non
      # zeros (the other features are not correlated to y and should be ignored
      # by a sparsifying regularizers such as L1 or elastic net)
      ground_truth = np.zeros((n_features, n_targets))
      ground_truth[:n_informative, :] = 100 * generator.rand(
          n_informative, n_targets
      )
  
      y = np.dot(X, ground_truth) + bias
  
      # Add noise
      if noise > 0.0:
          y += generator.normal(scale=noise, size=y.shape)
  
      # Randomly permute samples and features
      if shuffle:
          X, y = util_shuffle(X, y, random_state=generator)
  
          indices = np.arange(n_features)
          generator.shuffle(indices)
          X[:, :] = X[:, indices]
          ground_truth = ground_truth[indices]
  
      y = np.squeeze(y)
  
      if coef:
          return X, y, np.squeeze(ground_truth)
  
      else:
          return X, y
  
imports: import numbers
  import array
  import numpy
  from scipy import linalg
  import scipy.sparse
  from ..preprocessing import MultiLabelBinarizer
  from ..utils import check_array, check_random_state
  from ..utils import shuffle
  from ..utils.fixes import astype
  from ..utils.random import sample_without_replacement
  from ..externals import six
label_desc: Use image node_id 5 for calling a global function with example usage: make_regression(n_samples, n_features, n_informative, n_targets, bias, effective_rank, tail_strength, noise, shuffle, coef, random_state) and returns: X,  y,  np, X,  y