class_docstr: The class object for the Random Forest Plus (RF+) estimator, which can
  be used as a prediction model or interpreted via generalized
  mean decrease in impurity (MDI+). For more details, refer to [paper].
  
  Parameters
  ----------
  rf_model: scikit-learn random forest object or None
      The RF model to be used to build RF+. If None, then a new
      RandomForestRegressor() or RandomForestClassifier() is instantiated.
  prediction_model: A PartialPredictionModelBase object, scikit-learn type estimator, or "auto"
      The prediction model to be used for making (full and partial) predictions
      using the block transformed data.
      If value is set to "auto", then a default is chosen as follows:
       - For RandomForestPlusRegressor, RidgeRegressorPPM is used.
       - For RandomForestPlusClassifier, LogisticClassifierPPM is used.
  sample_split: string in {"loo", "oob", "inbag"} or None
      The sample splitting strategy to be used for fitting RF+. If "oob",
      RF+ is trained on the out-of-bag data. If "inbag", RF+ is trained on the
      in-bag data. Otherwise, RF+ is trained on the full training data.
  include_raw: bool
      Flag for whether to augment the local decision stump features extracted
      from the RF model with the original features.
  drop_features: bool
      Flag for whether to use an intercept model for the partial predictions
      on a given feature if a tree does not have any nodes that split on it,
      or to use a model on the raw feature (if include_raw is True).
  add_transformers: list of BlockTransformerBase objects or None
      Additional block transformers (if any) to include in the RF+ model.
  center: bool
      Flag for whether to center the transformed data in the transformers.
  normalize: bool
      Flag for whether to rescale the transformed data to have unit
      variance in the transformers.
code: def _get_pred_func(self):
      if hasattr(self.prediction_model, "predict_proba_loo"):
          pred_func = self.prediction_model.predict_proba_loo
      elif hasattr(self.prediction_model, "predict_loo"):
          pred_func = self.prediction_model.predict_loo
      elif hasattr(self.prediction_model, "predict_proba"):
          pred_func = self.prediction_model.predict_proba
      else:
          pred_func = self.prediction_model.predict
      return pred_func
  
imports: import copy
  import numpy
  import pandas
  from sklearn.base import BaseEstimator, RegressorMixin, ClassifierMixin
  from sklearn.utils import check_array
  from sklearn.utils.validation import check_is_fitted
  from sklearn.metrics import r2_score, roc_auc_score, log_loss
  from sklearn.ensemble import RandomForestRegressor, RandomForestClassifier
  from sklearn.preprocessing import OneHotEncoder
  from imodels.importance.block_transformers import MDIPlusDefaultTransformer, TreeTransformer, CompositeTransformer, IdentityTransformer
  from imodels.importance.ppms import PartialPredictionModelBase, GlmClassifierPPM, RidgeRegressorPPM, LogisticClassifierPPM
  from imodels.importance.mdi_plus import ForestMDIPlus, _get_default_sample_split, _validate_sample_split, _get_sample_split_data
label_desc: Use image node_id 7 for calling the _RandomForestPlus obj's underlying member method code with example usage: obj._get_pred_func() and returns: pred_func