code: def run_init(self):
      # Resample @ 5min granularity b/c default (1min) takes too long to train
      self.csv_name = join(rootdir, "data", "example.csv")
      self.data = csv_to_time_series(
          self.csv_name, timestamp_unit="ms", data_cols=["kpi"]
      )
      self.test_len = math.ceil(len(self.data) / 5)
  
      logger.info(f"Data looks like:\n{self.data[:5]}")
      self.vals_train = self.data[: -self.test_len]
      self.vals_test = self.data[-self.test_len :]
  
      transform = TransformSequence(
          [
              TemporalResample("15min", trainable_granularity=False),
              Shingle(size=10, stride=1),
              MeanVarNormalize(),
              DifferenceTransform(),
          ]
      )
      self.model = RandomCutForest(
          RandomCutForestConfig(
              transform=transform,
              n_estimators=50,
              max_n_samples=256,
              seed=0,
              threshold=AggregateAlarms(alm_threshold=3.0),
          )
      )
      print()
      logger.info("Training model...\n")
      self.model.train(self.vals_train)
  
file_path: merlion/tests/anomaly/test_random_cut_forest.py
imports: import logging
  import math
  from os.path import abspath, dirname, join
  import sys
  import unittest
  import numpy
  from merlion.models.anomaly.random_cut_forest import RandomCutForest, RandomCutForestConfig
  from merlion.post_process.threshold import AggregateAlarms
  from merlion.transform.moving_average import DifferenceTransform
  from merlion.transform.normalize import MeanVarNormalize
  from merlion.transform.resample import Shingle, TemporalResample
  from merlion.transform.sequence import TransformSequence
  from merlion.utils.data_io import csv_to_time_series
label_desc: Use image node_id 1 for calling the TestRandomCutForest obj's underlying member method code with example usage: obj.run_init() without return types