code: def _onedal_predict(self, model, X, params, queue):
      gpu_device = queue is not None and queue.sycl_device.is_gpu
      if self.effective_metric_ == "euclidean" and not gpu_device:
          if self._fit_method == "brute":
              predict_alg = bf_knn_classification_prediction
  
          else:
              predict_alg = kdtree_knn_classification_prediction
  
          return predict_alg(**params).compute(X, model)
  
      policy = self._get_policy(queue, X)
      X = _convert_to_supported(policy, X)
      if hasattr(self, "_onedal_model"):
          model = self._onedal_model
      else:
          model = self._create_model(_backend.neighbors.classification)
      if "responses" not in params["result_option"]:
          params["result_option"] += "|responses"
      params["fptype"] = "float" if X.dtype == np.float32 else "double"
      result = _backend.neighbors.classification.infer(
          policy, params, model, to_table(X)
      )
  
      return result
  
imports: from abc import ABCMeta
  from numbers import Integral
  import numpy
  from daal4py import bf_knn_classification_prediction, bf_knn_classification_training, kdtree_knn_classification_prediction, kdtree_knn_classification_training
  from onedal import _backend
  from ..common._estimator_checks import _check_is_fitted, _is_classifier, _is_regressor
  from ..common._mixin import ClassifierMixin, RegressorMixin
  from ..common._policy import _get_policy
  from ..datatypes import _convert_to_supported, from_table, to_table
  from ..utils import _check_array, _check_classification_targets, _check_n_features, _check_X_y, _column_or_1d, _num_samples
label_desc: Use image node_id 5 for calling the KNeighborsClassifier obj's underlying member method code with example usage: obj._onedal_predict(model, X, params, queue) and returns: result, predict_alg