code: def get_data(self):
      # create sample data
      schema = StructType(
          [
              StructField("shared_text", StringType()),
              StructField("action1", StringType()),
              StructField("action2_feat1", StringType()),
              StructField("action2_feat2", StringType()),
              StructField("chosenAction", IntegerType()),
              StructField("label", DoubleType()),
              StructField("probability", DoubleType()),
          ],
      )
  
      data = spark.createDataFrame(
          [
              (
                  "shared_f",
                  "action1_f",
                  "action2_f",
                  "action2_f2=0",
                  1,
                  1.0,
                  0.8,
              ),
              (
                  "shared_f",
                  "action1_f",
                  "action2_f",
                  "action2_f2=1",
                  2,
                  1.0,
                  0.8,
              ),
              (
                  "shared_f",
                  "action1_f",
                  "action2_f",
                  "action2_f2=1",
                  2,
                  4.0,
                  0.8,
              ),
              (
                  "shared_f",
                  "action1_f",
                  "action2_f",
                  "action2_f2=0",
                  1,
                  0.0,
                  0.8,
              ),
          ],
          schema,
      ).coalesce(1)
  
      # featurize data
      shared_featurizer = VowpalWabbitFeaturizer(
          inputCols=["shared_text"],
          outputCol="shared",
      )
      action_one_featurizer = VowpalWabbitFeaturizer(
          inputCols=["action1"],
          outputCol="action1_features",
      )
      action_two_featurizer = VowpalWabbitFeaturizer(
          inputCols=["action2_feat1", "action2_feat2"],
          outputCol="action2_features",
      )
      action_merger = VectorZipper(
          inputCols=["action1_features", "action2_features"],
          outputCol="features",
      )
      pipeline = Pipeline(
          stages=[
              shared_featurizer,
              action_one_featurizer,
              action_two_featurizer,
              action_merger,
          ],
      )
      tranformation_pipeline = pipeline.fit(data)
  
      return tranformation_pipeline.transform(data)
  
imports: import os
  import unittest
  import tempfile
  import pyspark
  from synapsemltest.spark import *
  from synapse.ml.vw import VowpalWabbitContextualBandit
  from synapse.ml.vw import VowpalWabbitFeaturizer
  from synapse.ml.vw import VectorZipper
  from pyspark.ml.tuning import ParamGridBuilder
  from pyspark.sql.types import *
  from pyspark.ml import Pipeline
  from pyspark.ml.wrapper import *
  from pyspark.ml.common import inherit_doc, _java2py, _py2java
  from pyspark.sql.utils import AnalysisException
label_desc: Use image node_id 1 for calling the VowpalWabbitSpec obj's underlying member method code with example usage: obj.get_data() and returns: tranformation_pipeline