code: def get_estimator_df(self):
      data = self.sc.parallelize(
          [
              ((2.0, 1.0), (1.0, 2.0)),
              ((1.0, 2.0), (2.0, 1.0)),
              ((2.0, 1.0), (1.0, 2.0)),
              ((1.0, 2.0), (2.0, 1.0)),
          ]
      )
  
      schema = StructType(
          [
              StructField(
                  "features", ArrayType(DoubleType(), False), False
              ),
              StructField(
                  "label", ArrayType(DoubleType(), False), False
              ),
          ]
      )
      df = self.sqlContext.createDataFrame(data, schema)
      return df
  
imports: import errno
  import shutil
  import pytest
  from bigdl.nn.criterion import *
  from bigdl.nn.layer import *
  from bigdl.optim.optimizer import *
  from numpy.testing import assert_allclose
  from pyspark.ml import Pipeline, PipelineModel
  from pyspark.ml.feature import MinMaxScaler
  from pyspark.ml.tuning import ParamGridBuilder
  from pyspark.sql.types import *
  from zoo.common.nncontext import *
  from zoo.feature.common import *
  from zoo.feature.image import *
  from zoo.pipeline.api.keras import layers
  from zoo.pipeline.api.keras.models import Model
  from zoo.pipeline.api.keras.optimizers import Adam
  from zoo.pipeline.nnframes import *
  from zoo.util.tf import *
label_desc: Use image node_id 3 for calling the TestNNClassifer obj's underlying member method code with example usage: obj.get_estimator_df() and returns: df