code: def test_tsdataset_scale_unscale(self):
      df = get_ts_df()
      df_test = get_ts_df()
      tsdata = TSDataset.from_pandas(
          df,
          dt_col="datetime",
          target_col="value",
          extra_feature_col=["extra feature"],
          id_col="id",
      )
      tsdata_test = TSDataset.from_pandas(
          df_test,
          dt_col="datetime",
          target_col="value",
          extra_feature_col=["extra feature"],
          id_col="id",
      )
  
      from sklearn.preprocessing import (
          StandardScaler,
          MaxAbsScaler,
          MinMaxScaler,
          RobustScaler,
      )
  
      scalers = [
          StandardScaler(),
          MaxAbsScaler(),
          MinMaxScaler(),
          RobustScaler(),
      ]
      for scaler in scalers:
          tsdata.scale(scaler)
          tsdata_test.scale(scaler, fit=False)
  
          with pytest.raises(AssertionError):
              assert_frame_equal(tsdata.to_pandas(), df)
          with pytest.raises(AssertionError):
              assert_frame_equal(tsdata_test.to_pandas(), df_test)
  
          tsdata.unscale()
          tsdata_test.unscale()
  
          assert_frame_equal(tsdata.to_pandas(), df)
          assert_frame_equal(tsdata_test.to_pandas(), df_test)
  
      tsdata._check_basic_invariants()
  
imports: import pytest
  import numpy
  import pandas
  import random
  import tempfile
  import os
  import shutil
  from test.zoo.pipeline.utils.test_utils import ZooTestCase
  from zoo.chronos.data import TSDataset
  from pandas.testing import assert_frame_equal
  from numpy.testing import assert_array_almost_equal
label_desc: Use image node_id 17 for calling the TestTSDataset obj's underlying member method code with example usage: obj.test_tsdataset_scale_unscale() without return types