code: def test_cat_normalizer(self):
      data = [["a", "b", "c"], ["c", "b", "b"], ["a", "a", None]]
      encoded_target = [
          [[0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]],
          [[0, 0, 0, 1], [0, 0, 1, 0], [0, 0, 1, 0]],
          [[0, 1, 0, 0], [0, 1, 0, 0], [1, 0, 0, 0]],
      ]
      normalizer = CatNormalizer()
      normalizer.prepare(data)
      encoded = normalizer.encode(data)
      self.assertTrue(encoded_target, encoded)
      dec = [normalizer.decode(e).squeeze().tolist() for e in encoded]
      self.assertTrue(dec[-1][-1] == normalizer.unk)
      dec[-1][-1] = None
      self.assertTrue(data == dec)
  
file_path: lightwood/tests/unit_tests/encoder/time_series/test_timeseries_rnn.py
imports: import unittest
  import numpy
  import torch
  from lightwood.encoder.time_series.rnn import TimeSeriesEncoder
  from lightwood.encoder.helpers import MinMaxNormalizer, CatNormalizer
  import pandas
label_desc: Use image node_id 2 for calling the TestRnnEncoder obj's underlying member method code with example usage: obj.test_cat_normalizer() without return types