code: def cake(return_X_y=True):
      
      # y is real
      # recommend LinearGAM
      cake = pd.read_csv(PATH + '/cake.csv', index_col=0)
      if return_X_y:
          X = cake[['recipe', 'replicate', 'temperature']].values
          X[:,0] = np.unique(cake.values[:,1], return_inverse=True)[1]
          X[:,1] -= 1
          y = cake['angle'].values
          return _clean_X_y(X, y)
      return cake
docs: cake dataset
  
      Parameters
      ----------
      return_X_y : bool,
          if True, returns a model-ready tuple of data (X, y)
          otherwise, returns a Pandas DataFrame
  
      Returns
      -------
      model-ready tuple of data (X, y)
          OR
      Pandas DataFrame
  
      Notes
      -----
      X contains the category of recipe used transformed to an integer,
      the catergory of replicate, and the temperatue.
  
      y contains the angle at which the cake broke.
  
      Source:
      https://vincentarelbundock.github.io/Rdatasets/doc/lme4/cake.html