code: def setUp(self):
      df = pd.DataFrame(range(0, 21), columns=["id"])
      df["y"] = df["id"].apply(lambda x: 1 if x < 10 else 0)
      df["x1"] = np.random.randint(1, 123, df.shape[0])
      df["x2"] = np.random.randint(1, 3, df.shape[0])
      df["x3"] = np.random.choice(["A", "B", "C", "D"], df.shape[0])
      df["x4"] = np.random.choice(["A", "B", "C", np.nan], df.shape[0])
      df = df.set_index("id")
      encoder = ce.OrdinalEncoder(
          cols=["x3", "x4"], handle_unknown="None"
      )
      encoder_fitted = encoder.fit(df)
      df_encoded = encoder_fitted.transform(df)
      clf = cb.CatBoostClassifier(n_estimators=1).fit(
          df_encoded[["x1", "x2", "x3", "x4"]], df_encoded["y"]
      )
      self.xpl = SmartExplainer(model=clf, preprocessing=encoder)
      self.xpl.compile(x=df_encoded[["x1", "x2", "x3", "x4"]])
      self.df = df_encoded
  
file_path: shapash/tests/integration_tests/test_report_generation.py
imports: import unittest
  import tempfile
  import shutil
  import numpy
  import os
  import pandas
  import catboost
  import category_encoders
  from shapash import SmartExplainer
  from shapash.report.generation import execute_report, export_and_save_report
  from category_encoders import OrdinalEncoder
label_desc: Use image node_id 1 for calling the TestGeneration obj's underlying member method code with example usage: obj.setUp() without return types