class_docstr: FIGS (sum of trees) classifier.
  Fast Interpretable Greedy-Tree Sums (FIGS) is an algorithm for fitting concise rule-based models.
  Specifically, FIGS generalizes CART to simultaneously grow a flexible number of trees in a summation.
  The total number of splits across all the trees can be restricted by a pre-specified threshold, keeping the model interpretable.
  Experiments across real-world datasets show that FIGS achieves state-of-the-art prediction performance when restricted to just a few splits (e.g. less than 20).
  https://arxiv.org/abs/2201.11931
class_docstr_tok: ["FIGS","(","sum","of","trees",")","classifier",".","Fast","Interpretable","Greedy-Tree","Sums","(","FIGS",")","is","an","algorithm","for","fitting","concise","rule-based","models",".","Specifically",",","FIGS","generalizes","CART","to","simultaneously","grow","a","flexible","number","of","trees","in","a","summation",".","The","total","number","of","splits","across","all","the","trees","can","be","restricted","by","a","pre-specified","threshold",",","keeping","the","model","interpretable",".","Experiments","across","real-world","datasets","show","that","FIGS","achieves","state-of-the-art","prediction","performance","when","restricted","to","just","a","few","splits","(","e.g",".","less","than","20",")",".","https",":","\/\/arxiv.org\/abs\/2201.11931"]
docstr: Predict probability for classifiers:
  Default behavior is to constrain the outputs to the range of probabilities, i.e. 0 to 1, with a sigmoid function.
  Set use_clipped_prediction=True to use prior behavior of clipping between 0 and 1 instead.
docstr_tok: ["Predict","probability","for","classifiers",":","Default","behavior","is","to","constrain","the","outputs","to","the","range","of","probabilities",",","i.e",".","0","to","1",",","with","a","sigmoid","function",".","Set","use_clipped_prediction=True","to","use","prior","behavior","of","clipping","between","0","and","1","instead","."]
code: def predict_proba(
      self, X, categorical_features=None, use_clipped_prediction=False
  ):
      """Predict probability for classifiers:
      Default behavior is to constrain the outputs to the range of probabilities, i.e. 0 to 1, with a sigmoid function.
      Set use_clipped_prediction=True to use prior behavior of clipping between 0 and 1 instead.
      """
      if hasattr(self, "_encoder"):
          X = self._encode_categories(
              X, categorical_features=categorical_features
          )
      X = check_array(X)
      if isinstance(self, RegressorMixin):
          return NotImplemented
      preds = np.zeros(X.shape[0])
      for tree in self.trees_:
          preds += self._predict_tree(tree, X)
      if use_clipped_prediction:
          # old behavior, pre v1.3.9
          # constrain to range of probabilities by clipping
          preds = np.clip(preds, a_min=0.0, a_max=1.0)
      else:
          # constrain to range of probabilities with a sigmoid function
          preds = expit(preds)
      return np.vstack((1 - preds, preds)).transpose()
  
imports: from copy import deepcopy
  from typing import List
  import matplotlib.pyplot
  import numpy
  import pandas
  from scipy.special import expit
  from sklearn import datasets
  from sklearn import tree
  from sklearn.base import BaseEstimator, ClassifierMixin, RegressorMixin
  from sklearn.model_selection import train_test_split, cross_val_score
  from sklearn.tree import plot_tree, DecisionTreeClassifier
  from sklearn.utils import check_X_y, check_array
  from sklearn.utils.validation import _check_sample_weight, check_is_fitted
  from imodels.tree.viz_utils import extract_sklearn_tree_from_figs
  from imodels.util.arguments import check_fit_arguments
  from imodels.util.data_util import encode_categories
label_desc: Use image node_id 11 for calling the FIGS obj's underlying member method code with example usage: obj.predict_proba(X, categorical_features, use_clipped_prediction) and returns: np, NotImplemented