code: def test_scikit_learn_compatibility():
      """Run scikit-learn compatibility tests"""
  
      # sklearn tests in:
      # https://github.com/scikit-learn/scikit-learn/blob/main/sklearn/utils/estimator_checks.py
  
      skip_tests = {
          "check_dtype_object",  # the error message required to pass is too specific and incorrect for us
          "check_classifiers_one_label",  # TODO: fix this!  We should accept 1 category
          "check_classifiers_regression_target",  # we're more permissive and convert any y values to str
          "check_supervised_y_no_nan",  # error message too specific
          "check_supervised_y_2d",  # we ignore useless added dimensions
          "check_fit2d_predict1d",  # we accept 1d for predict
          "check_fit2d_1sample",  # TODO: we allow fitting on 1 sample, but this kind of input is likely a bug from the caller, so change this
      }
      for estimator, check_func in check_estimator(
          ExplainableBoostingClassifier(), generate_only=True
      ):
          f = check_func.func
          module = f.__module__
          shortname = f.__name__
          fullname = f"{module}.{shortname}"
          if shortname not in skip_tests:
              try:
                  check_func(estimator)
              except BaseException as e:
                  # print(fullname)
                  # print(f"{type(e).__name__}: {e}")
                  # print()
                  pass
  
      for estimator, check_func in check_estimator(
          ExplainableBoostingRegressor(), generate_only=True
      ):
          f = check_func.func
          module = f.__module__
          shortname = f.__name__
          fullname = f"{module}.{shortname}"
          if shortname not in skip_tests:
              try:
                  check_func(estimator)
              except BaseException as e:
                  # print(fullname)
                  # print(f"{type(e).__name__}: {e}")
                  # print()
                  pass
  
      for estimator, check_func in check_estimator(
          DPExplainableBoostingClassifier(), generate_only=True
      ):
          f = check_func.func
          module = f.__module__
          shortname = f.__name__
          fullname = f"{module}.{shortname}"
          if shortname not in skip_tests:
              try:
                  check_func(estimator)
              except BaseException as e:
                  # print(fullname)
                  # print(f"{type(e).__name__}: {e}")
                  # print()
                  pass
  
      for estimator, check_func in check_estimator(
          DPExplainableBoostingRegressor(), generate_only=True
      ):
          f = check_func.func
          module = f.__module__
          shortname = f.__name__
          fullname = f"{module}.{shortname}"
          if shortname not in skip_tests:
              try:
                  check_func(estimator)
              except BaseException as e:
                  # print(fullname)
                  # print(f"{type(e).__name__}: {e}")
                  # print()
                  pass
  
imports: import math
  from sklearn.metrics import log_loss
  from interpret.utils import make_synthetic
  from ...tutils import synthetic_multiclass, synthetic_classification, iris_classification, smoke_test_explanations
  from ...tutils import synthetic_regression
  from interpret.glassbox import ExplainableBoostingRegressor, ExplainableBoostingClassifier
  from interpret.privacy import DPExplainableBoostingClassifier, DPExplainableBoostingRegressor
  from interpret.utils import inv_link
  from io import StringIO
  import json
  import numpy
  import pandas
  from sklearn.model_selection import train_test_split
  from sklearn.metrics import accuracy_score
  from sklearn.utils.estimator_checks import check_estimator
  import pytest
  import warnings
label_desc: Use image node_id 38 for calling a global function with example usage: test_scikit_learn_compatibility() without return types