code: def fit(self, X, Y=None):
      import sklearn.cluster
  
      self.n_clusters = int(self.n_clusters)
  
      n_clusters = min(self.n_clusters, X.shape[1])
      if not callable(self.pooling_func):
          self.pooling_func = self.pooling_func_mapping[
              self.pooling_func
          ]
  
      self.preprocessor = sklearn.cluster.FeatureAgglomeration(
          n_clusters=n_clusters,
          affinity=self.affinity,
          linkage=self.linkage,
          pooling_func=self.pooling_func,
      )
      self.preprocessor.fit(X)
      return self
  
file_path: auto-sklearn/autosklearn/pipeline/components/feature_preprocessing/feature_agglomeration.py
imports: from typing import Optional
  import numpy
  from ConfigSpace.configuration_space import ConfigurationSpace
  from ConfigSpace.forbidden import ForbiddenAndConjunction, ForbiddenEqualsClause, ForbiddenInClause
  from ConfigSpace.hyperparameters import CategoricalHyperparameter, UniformIntegerHyperparameter
  from autosklearn.askl_typing import FEAT_TYPE_TYPE
  from autosklearn.pipeline.components.base import AutoSklearnPreprocessingAlgorithm
  from autosklearn.pipeline.constants import DENSE, INPUT, UNSIGNED_DATA
label_desc: Use image node_id 2 for calling the FeatureAgglomeration obj's underlying member method code with example usage: obj.fit(X, Y) and returns: self