code: def test_ebm_synthetic_pairwise():
      a = np.random.randint(low=0, high=50, size=1000)
      b = np.random.randint(low=0, high=20, size=1000)
  
      df = pd.DataFrame(np.c_[a, b], columns=["a", "b"])
      df["y"] = [
          1 if (x > 35 and y > 15) or (x < 15 and y < 5) else 0
          for x, y in zip(df["a"], df["b"])
      ]
  
      X = df[["a", "b"]]
      y = df["y"]
  
      random_state = 1
      X_train, X_test, y_train, y_test = train_test_split(
          X, y, test_size=0.20, random_state=random_state
      )
  
      clf = ExplainableBoostingClassifier(
          n_jobs=1, outer_bags=1, interactions=1
      )
      clf.fit(X_train, y_train)
  
      clf_global = clf.explain_global()
  
      # Low/Low and High/High should learn high scores
      assert clf_global.data(2)["scores"][-1][-1] > 3.5
      assert clf_global.data(2)["scores"][1][1] > 3.5
  
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 14 for calling a global function with example usage: test_ebm_synthetic_pairwise() without return types