code: def fit(self):
      logger = tsutil.get_pyaf_logger()
      logger.info("START_HIERARCHICAL_TRAINING")
      start_time = time.time()
      self.create_HierarchicalStructure()
      # self.plot();
      self.create_SummingMatrix()
      lAllLevelsDataset = self.create_all_levels_dataset(
          self.mTrainingDataset
      )
      self.create_all_levels_models(
          lAllLevelsDataset, self.mHorizon, self.mDateColumn
      )
      self.computeTopDownHistoricalProportions(lAllLevelsDataset)
      lForecast_DF = self.internal_forecast(
          self.mTrainingDataset, self.mHorizon
      )
      self.computePerfOnCombinedForecasts(lForecast_DF)
      lTrainTime = time.time() - start_time
      logger.info(
          "END_HIERARCHICAL_TRAINING_TIME_IN_SECONDS " + str(lTrainTime)
      )
  
imports: import pandas
  import numpy
  from ..None import ForecastEngine
  from .None import Options
  from .None import Perf
  from .None import Utils
  from .None import Plots
  import time
label_desc: Use image node_id 11 for calling the cSignalHierarchy obj's underlying member method code with example usage: obj.fit() without return types