code: def not_equal(i, j):
      # `shap.KernelExplainer.not_equal` method fails on some special types such as
      # timestamp, this breaks the kernel explainer routine.
      # `PatchedKernelExplainer` fixes this issue.
      # See https://github.com/slundberg/shap/pull/2586
      number_types = (int, float, np.number)
      if isinstance(i, number_types) and isinstance(j, number_types):
          return 0 if np.isclose(i, j, equal_nan=True) else 1
      else:
          return 0 if i == j else 1
  
file_path: mlflow/mlflow/models/evaluation/_shap_patch.py
imports: import pickle
  import numpy
  import shap
  from shap._serializable import Deserializer, Serializable, Serializer
label_desc: Use image node_id 1 for calling the _PatchedKernelExplainer obj's underlying member method code with example usage: obj.not_equal(i, j) and returns: unknown, unknown