class_docstr: Handles parameter management for classifiers composed of named estimators.
      
code: def _get_params(self, attr, deep=True):
      out = super().get_params(deep=deep)
      if not deep:
          return out
      estimators = getattr(self, attr)
      out.update(estimators)
      for name, estimator in estimators:
          if hasattr(estimator, "get_params"):
              for key, value in estimator.get_params(deep=True).items():
                  out["%s__%s" % (name, key)] = value
      return out
  
file_path: cuml/python/cuml/_thirdparty/sklearn/utils/skl_dependencies.py
imports: from cuml.internals.array_sparse import SparseCumlArray
  from ....internals.base import Base
  from ..utils.validation import check_X_y
  from ....thirdparty_adapters import check_array
label_desc: Use image node_id 1 for calling the BaseComposition obj's underlying member method code with example usage: obj._get_params(attr, deep) and returns: out, out