code: def test_fit_log_and_normal(self):
      # training data
      d = {
          "col1": [12, 13, 3, 4, 5, 6, 7, 8000, 9000, 10000.0],
          "col2": [21, 22, 23, 24, 25, 26, 27, 28, 29, 30.0],
          "col3": [12, 2, 3, 4, 5, 6, 7, 8000, 9000, 10000.0],
      }
      df = pd.DataFrame(data=d)
  
      scale = Scale(
          ["col1", "col3"], scale_method=Scale.SCALE_LOG_AND_NORMAL
      )
      scale.fit(df)
      df = scale.transform(df)
      val = float(df["col1"][0])
  
      assert_almost_equal(np.mean(df["col1"]), 0)
      self.assertTrue(
          df["col1"][0] + 0.01 < df["col1"][1]
      )  # in case of wrong scaling the small values will be squeezed
  
      df = scale.inverse_transform(df)
  
      scale2 = Scale()
      scale_params = scale.to_json()
  
      scale2.from_json(scale_params)
      df = scale2.transform(df)
      assert_almost_equal(df["col1"][0], val)
  
file_path: mljar-supervised/tests/tests_preprocessing/test_scale.py
imports: import unittest
  import tempfile
  import json
  import numpy
  import pandas
  from numpy.testing import assert_almost_equal
  from supervised.preprocessing.scale import Scale
label_desc: Use image node_id 1 for calling the ScaleTest obj's underlying member method code with example usage: obj.test_fit_log_and_normal() without return types