code: def to_scalar_df(
      self, features: Iterable[BaseFeature] | None = None
  ) -> DataFrame:
      raise NotImplementedError()
  
imports: from __future__ import annotations
  import contextlib
  from abc import ABC, abstractmethod
  from typing import Iterable
  from ludwig.data.batcher.base import Batcher
  from ludwig.distributed import DistributedStrategy
  from ludwig.features.base_feature import BaseFeature
  from ludwig.utils.defaults import default_random_seed
  from ludwig.utils.types import DataFrame
label_desc: Use image node_id 4 for calling the Dataset obj's underlying member method code with example usage: obj.to_scalar_df(features) without return types