code: def _has_predict_proba(self, model) -> bool:
      try:
          # taking self.x_ref[0].shape to overcome bot cases when self.x_ref is np.ndarray or list
          model.predict_proba(np.zeros((1,) + self.x_ref[0].shape))
          has_predict_proba = True
      except NotFittedError:
          has_predict_proba = True
      except AttributeError:
          has_predict_proba = False
      return has_predict_proba
  
file_path: alibi-detect/alibi_detect/cd/sklearn/classifier.py
imports: import logging
  import numpy
  from functools import partial
  from typing import Callable, Dict, Optional, Tuple, Union
  from sklearn.base import clone, ClassifierMixin
  from sklearn.calibration import CalibratedClassifierCV
  from sklearn.exceptions import NotFittedError
  from sklearn.ensemble import RandomForestClassifier
  from alibi_detect.cd.base import BaseClassifierDrift
  from alibi_detect.utils.warnings import deprecated_alias
  from alibi_detect.utils.frameworks import Framework
label_desc: Use image node_id 2 for calling the ClassifierDriftSklearn obj's underlying member method code with example usage: obj._has_predict_proba(model) and returns: has_predict_proba