code: def _categorical_data(
      category_values_lower_bound, category_values_upper_bound
  ):
      X, y = load_breast_cancer(return_X_y=True)
      X_df = pd.DataFrame()
      rnd = np.random.RandomState(0)
      n_cat_values = rnd.randint(
          category_values_lower_bound,
          category_values_upper_bound,
          size=X.shape[1],
      )
      for i in range(X.shape[1]):
          bins = np.linspace(0, 1, num=n_cat_values[i] + 1)
          X_df[f"cat_col_{i}"] = pd.qcut(
              X[:, i], q=bins, labels=range(n_cat_values[i])
          ).as_unordered()
      return X_df, y
  
imports: import numpy
  import pandas
  import pytest
  from sklearn.model_selection import train_test_split
  import lightgbm
  from lightgbm.compat import GRAPHVIZ_INSTALLED, MATPLOTLIB_INSTALLED, PANDAS_INSTALLED, pd_DataFrame
  from .utils import load_breast_cancer, make_synthetic_regression
label_desc: Use image node_id 2 for calling a global function with example usage: _categorical_data(category_values_lower_bound, category_values_upper_bound) and returns: X_df,  y