class_docstr: To load and hold UCI classification datasets:
  https://archive.ics.uci.edu/ml/datasets.php?task=cla&sort=nameUp&view=table
  Also to convert it to contextual bandits problems
  References: https://arxiv.org/abs/1103.4601
code: def num_features(self) -> int:
      return self._features.shape[1]
  
imports: import argparse
  import json
  import logging
  import os
  import random
  import sys
  from dataclasses import dataclass
  from pathlib import PurePath
  from typing import Iterable, Tuple
  import numpy
  import pandas
  import torch
  from reagent.ope.estimators.contextual_bandits_estimators import Action, ActionDistribution, ActionRewards, BanditsEstimatorInput, BanditsModel, DMEstimator, DoublyRobustEstimator, IPSEstimator, LogSample
  from reagent.ope.estimators.estimator import Estimator, Evaluator
  from reagent.ope.estimators.types import ActionSpace, Policy, Trainer, TrainingData
  from reagent.ope.trainers.linear_trainers import DecisionTreeTrainer, LogisticRegressionTrainer, SGDClassifierTrainer
  from torch import Tensor
label_desc: Use image node_id 5 for calling the UCIMultiClassDataset obj's underlying member method code with example usage: obj.num_features() and returns: self