class_docstr: Scale channel types using constant values.
code: def fit(self, X, y=None):
      scalings = _check_scalings_user(self._scalings)
      picks_by_type = _picks_by_type(
          pick_info(
              self._info, _pick_data_channels(self._info, exclude=())
          )
      )
      std = np.ones(sum(len(p[1]) for p in picks_by_type))
      if X.shape[1] != len(std):
          raise ValueError(
              "info had %d data channels but X has %d channels"
              % (len(std), len(X))
          )
      if (
          self._do_scaling
      ):  # this is silly, but necessary for completeness
          for kind, picks in picks_by_type:
              std[picks] = 1.0 / scalings[kind]
      self.std_ = std
      self.mean_ = np.zeros_like(std)
      return self
  
imports: import numpy
  from .._fiff.pick import _pick_data_channels, _picks_by_type, _picks_to_idx, pick_info, pick_types
  from ..cov import _check_scalings_user
  from ..filter import filter_data
  from ..time_frequency import psd_array_multitaper
  from ..utils import _check_option, _validate_type, fill_doc, verbose
  from .base import BaseEstimator
  from .mixin import TransformerMixin
label_desc: Use image node_id 2 for calling the _ConstantScaler obj's underlying member method code with example usage: obj.fit(X, y) and returns: self