docstr: Compute standard deviation of residuals for each item using the validation set.
  
  Saves per-item residuals to `self.residuals_std_per_item` and average std to `self._avg_residuals_std`.
code: def _save_residuals_std(self, val_df: pd.DataFrame) -> None:
      """Compute standard deviation of residuals for each item using the validation set.
  
      Saves per-item residuals to `self.residuals_std_per_item` and average std to `self._avg_residuals_std`.
      """
      residuals = val_df[MLF_TARGET] - self._mlf.models_[
          "mean"
      ].predict(val_df)
      self._residuals_std_per_item = (
          residuals.pow(2.0)
          .groupby(val_df[MLF_ITEMID], sort=False)
          .mean()
          .pow(0.5)
      )
      self._avg_residuals_std = np.sqrt(residuals.pow(2.0).mean())
  
imports: import logging
  import math
  import os
  import time
  from typing import Any, Dict, List, Optional, Tuple
  import numpy
  import pandas
  from sklearn.base import BaseEstimator
  import autogluon.core
  from autogluon.common.utils.log_utils import set_logger_verbosity
  from autogluon.tabular import TabularPredictor
  from autogluon.timeseries.dataset.ts_dataframe import ITEMID, TIMESTAMP, TimeSeriesDataFrame
  from autogluon.timeseries.models.abstract import AbstractTimeSeriesModel
  from autogluon.timeseries.models.local import SeasonalNaiveModel
  from autogluon.timeseries.utils.datetime import get_lags_for_frequency, get_seasonality, get_time_features_for_frequency
  from autogluon.timeseries.utils.forecast import get_forecast_horizon_index_ts_dataframe
  from autogluon.timeseries.utils.warning_filters import warning_filter
label_desc: Use image node_id 10 for calling the AbstractMLForecastModel obj's underlying member method code with example usage: obj._save_residuals_std(val_df) without return types