docstr: Unscale the time series forecaster's numpy prediction result/ground truth.
  
  :param data: xshards same with self.numpy_xshards.
  :param key: str, 'y' or 'prediction', default to 'y'. if no "prediction"
  or "y" return an error and require our users to input a key. if key is
  None, key will be set 'prediction'.
  
  :return: the unscaled xshardtsdataset instance.
docstr_tok: ["Unscale","the","time","series","forecaster","'s","numpy","prediction","result\/ground","truth",".",":","param","data",":","xshards","same","with","self.numpy_xshards",".",":","param","key",":","str",",","'","y","'","or","'prediction","'",",","default","to","'","y","'",".","if","no","``","prediction","''","or","``","y","''","return","an","error","and","require","our","users","to","input","a","key",".","if","key","is","None",",","key","will","be","set","'prediction","'",".",":","return",":","the","unscaled","xshardtsdataset","instance","."]
code: def unscale_xshards(self, data, key=None):
      """
      Unscale the time series forecaster's numpy prediction result/ground truth.
  
      :param data: xshards same with self.numpy_xshards.
      :param key: str, 'y' or 'prediction', default to 'y'. if no "prediction"
      or "y" return an error and require our users to input a key. if key is
      None, key will be set 'prediction'.
  
      :return: the unscaled xshardtsdataset instance.
      """
      from bigdl.nano.utils.common import invalidInputError
  
      def _inverse_transform(data, scaler, scaler_index, key):
          from sklearn.utils.validation import check_is_fitted
          from bigdl.nano.utils.common import invalidInputError
  
          id = data["id"][0, 0]
          scaler_for_this_id = scaler[id]
          invalidInputError(
              not check_is_fitted(scaler_for_this_id),
              "scaler is not fitted. When calling scale for the first time, "
              "you need to set fit=True.",
          )
  
          return unscale_timeseries_numpy(
              data[key], scaler_for_this_id, scaler_index
          )
  
      if key is None:
          key = "prediction"
      invalidInputError(
          key in {"y", "prediction"},
          "key is not in {'y', 'prediction'}, "
          "please input the correct key.",
      )
  
      return data.transform_shard(
          _inverse_transform, self.scaler_dict, self.scaler_index, key
      )
  
imports: from bigdl.orca.data.shard import SparkXShards
  from bigdl.orca.learn.utils import dataframe_to_xshards_of_pandas_df
  from bigdl.chronos.data.utils.utils import _to_list, _check_type
  from bigdl.chronos.data.utils.roll import roll_timeseries_dataframe
  from bigdl.chronos.data.utils.impute import impute_timeseries_dataframe
  from bigdl.chronos.data.utils.split import split_timeseries_dataframe
  from bigdl.chronos.data.experimental.utils import add_row, transform_to_dict
  from bigdl.chronos.data.utils.scale import unscale_timeseries_numpy
  from bigdl.chronos.data.utils.feature import generate_dt_features
  import pandas
label_desc: Use image node_id 8 for calling the XShardsTSDataset obj's underlying member method code with example usage: obj.unscale_xshards(data, key) and returns: data, unscale_timeseries_numpy