code: def test_ebm_synthetic_multiclass():
      data = synthetic_multiclass()
      X_train = data["train"]["X"]
      y_train = data["train"]["y"]
      X_test = data["test"]["X"]
      y_test = data["test"]["y"]
  
      clf = ExplainableBoostingClassifier(
          n_jobs=-2, interactions=0, outer_bags=2
      )
      clf.fit(X_train, y_train)
  
      prob_scores = clf.predict_proba(X_train)
  
      within_bounds = (prob_scores >= 0.0).all() and (
          prob_scores <= 1.0
      ).all()
      assert within_bounds
  
      valid_ebm(clf)
  
      # Smoke test visualization(s)
      ebm_global = clf.explain_global()
      ebm_global.visualize(None)
      fig = ebm_global.visualize(0)
      assert len(fig.data) == 4  # Number of features
  
      ebm_local = clf.explain_local(X_test, y_test)
      ebm_local.visualize(None)
      fig = ebm_local.visualize(0)
      assert len(fig.data) == 3
  
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 12 for calling a global function with example usage: test_ebm_synthetic_multiclass() without return types