class_docstr: FIGSExt (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 a wide array of 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: max_features
      The number of features to consider when looking for the best split
  k1: number of iterations of tree-prediction backfitting to do after making each split
  k2: number of iterations of tree-prediction backfitting to do after the end of the entire
      tree-growing phase
code: def __init__(
      self,
      max_rules: int = None,
      posthoc_ridge: bool = False,
      include_linear: bool = False,
      max_features=None,
      min_impurity_decrease: float = 0.0,
      k1: int = 0,
      k2: int = 0,
  ):
      """
      max_features
          The number of features to consider when looking for the best split
      k1: number of iterations of tree-prediction backfitting to do after making each split
      k2: number of iterations of tree-prediction backfitting to do after the end of the entire
          tree-growing phase
      """
      super().__init__()
      self.max_rules = max_rules
      self.posthoc_ridge = posthoc_ridge
      self.include_linear = include_linear
      self.max_features = max_features
      self.weighted_model_ = None  # set if using posthoc_ridge
      self.min_impurity_decrease = min_impurity_decrease
      self.k1 = k1
      self.k2 = k2
      self._init_prediction_task()
  
imports: from copy import deepcopy
  import numpy
  from matplotlib import pyplot
  from sklearn import datasets
  from sklearn import tree
  from sklearn.base import BaseEstimator
  from sklearn.linear_model import RidgeCV, RidgeClassifierCV
  from sklearn.model_selection import train_test_split
  from sklearn.tree import plot_tree
  from sklearn.utils import check_X_y
  from imodels.tree.viz_utils import extract_sklearn_tree_from_figs
label_desc: Use image node_id 1 to create a new FIGSExt object from inherited base classes: BaseEstimator with example: obj = FIGSExt(max_rules, posthoc_ridge, include_linear, max_features, min_impurity_decrease, k1, k2)