code: def _fit(self, X, y, sample_weight, module, queue):
      policy = self._get_policy(queue, X)
      X = check_array(
          X, accept_sparse="csr", dtype=[np.float64, np.float32]
      )
      sample_weight = (
          make2d(sample_weight) if sample_weight is not None else None
      )
      X = make2d(X)
  
      types = [np.float32, np.float64]
      if get_dtype(X) not in types:
          X = X.astype(np.float64)
      X = _convert_to_supported(policy, X)
      dtype = get_dtype(X)
      params = self._get_onedal_params(dtype)
      result = module.compute(
          policy, params, to_table(X), to_table(sample_weight)
      )
  
      self.labels_ = from_table(result.responses).ravel()
      if result.core_observation_indices is not None:
          self.core_sample_indices_ = from_table(
              result.core_observation_indices
          ).ravel()
      else:
          self.core_sample_indices_ = np.array([], dtype=np.intc)
      self.components_ = np.take(X, self.core_sample_indices_, axis=0)
      self.n_features_in_ = X.shape[1]
      return self
  
file_path: scikit-learn-intelex/onedal/cluster/dbscan.py
imports: import numpy
  from sklearn.base import ClusterMixin
  from sklearn.utils import check_array
  from daal4py.sklearn._utils import get_dtype, make2d
  from onedal import _backend
  from ..common._policy import _get_policy
  from ..datatypes import _convert_to_supported, from_table, to_table
label_desc: Use image node_id 4 for calling the BaseDBSCAN obj's underlying member method code with example usage: obj._fit(X, y, sample_weight, module, queue) and returns: self