class_docstr: An evaluator simulates the live deployment of a model on historical data.
  It trains a model on an initial time series, and then re-trains that model
  at a specified frequency.
  
  The `EvaluatorBase.get_predict` method returns the train & test predictions
  of a model, as if it were being trained incrementally on the test data in
  the manner described above.
  
  Subclasses define slightly different protocols for different tasks, e.g.
  anomaly detection vs. forecasting.
class_docstr_tok: ["An","evaluator","simulates","the","live","deployment","of","a","model","on","historical","data",".","It","trains","a","model","on","an","initial","time","series",",","and","then","re-trains","that","model","at","a","specified","frequency",".","The","`","EvaluatorBase.get_predict","`","method","returns","the","train","&","test","predictions","of","a","model",",","as","if","it","were","being","trained","incrementally","on","the","test","data","in","the","manner","described","above",".","Subclasses","define","slightly","different","protocols","for","different","tasks",",","e.g",".","anomaly","detection","vs.","forecasting","."]
code: def _train_model(
      self, train_vals: TimeSeries, **train_kwargs
  ) -> TimeSeries:
      return self.model.train(train_vals, **train_kwargs)
  
imports: from abc import abstractmethod
  from typing import Any, List, Tuple, Union
  import numpy
  import pandas
  from tqdm import tqdm
  from merlion.models.base import ModelBase
  from merlion.models.forecast.base import ForecasterBase
  from merlion.utils.misc import AutodocABCMeta
  from merlion.utils.resample import granularity_str_to_seconds, to_offset
  from merlion.utils.time_series import TimeSeries
label_desc: Use image node_id 7 for calling the EvaluatorBase obj's underlying member method code with example usage: obj._train_model(train_vals) and returns: self