code: def test_lime_explainer_good_regressor_synthetic_data(self):
      X, y = make_classification(
          n_samples=1000,
          n_features=20,
          n_informative=2,
          n_redundant=2,
          random_state=10,
      )
  
      rf = RandomForestClassifier(n_estimators=500)
      rf.fit(X, y)
      instance = np.random.randint(0, X.shape[0])
      feature_names = ["feature" + str(i) for i in range(20)]
      explainer = LimeTabularExplainer(
          X, feature_names=feature_names, discretize_continuous=True
      )
  
      exp = explainer.explain_instance(X[instance], rf.predict_proba)
  
      self.assertIsNotNone(exp)
      self.assertEqual(10, len(exp.as_list()))
  
imports: import unittest
  import numpy
  import collections
  import sklearn
  import sklearn.datasets
  import sklearn.ensemble
  import sklearn.linear_model
  from numpy.testing import assert_array_equal
  from sklearn.datasets import load_iris, make_classification, make_multilabel_classification
  from sklearn.ensemble import RandomForestClassifier
  from sklearn.linear_model import LinearRegression
  from lime.discretize import QuartileDiscretizer, DecileDiscretizer, EntropyDiscretizer
  from lime.lime_tabular import LimeTabularExplainer
label_desc: Use image node_id 3 for calling the TestLimeTabular obj's underlying member method code with example usage: obj.test_lime_explainer_good_regressor_synthetic_data() without return types