class_docstr: Base class for BoostBoruta meta-estimator.
  
  Warning: This class should not be used directly. Use derived classes
  instead.
  
  Notes
  -----
  The code for the Boruta algorithm is inspired and improved from:
  https://github.com/scikit-learn-contrib/boruta_py
class_docstr_tok: ["Base","class","for","BoostBoruta","meta-estimator",".","Warning",":","This","class","should","not","be","used","directly",".","Use","derived","classes","instead",".","Notes","--","--","-","The","code","for","the","Boruta","algorithm","is","inspired","and","improved","from",":","https",":","\/\/github.com\/scikit-learn-contrib\/boruta_py"]
docstr: Private method to add shadow features to the original ones. 
docstr_tok: ["Private","method","to","add","shadow","features","to","the","original","ones","."]
code: def _create_X(self, X, feat_id_real):
      """Private method to add shadow features to the original ones."""
  
      if isinstance(X, np.ndarray):
          X_real = X[:, feat_id_real].copy()
          X_sha = X_real.copy()
          X_sha = np.apply_along_axis(
              self._random_state.permutation, 0, X_sha
          )
  
          X = np.hstack((X_real, X_sha))
  
      elif hasattr(X, "iloc"):
          X_real = X.iloc[:, feat_id_real].copy()
          X_sha = X_real.copy()
          X_sha = X_sha.apply(self._random_state.permutation)
          X_sha = X_sha.astype(X_real.dtypes)
  
          X = X_real.join(X_sha, rsuffix="_SHA")
  
      else:
          raise ValueError("Data type not understood.")
  
      return X
  
imports: import io
  import contextlib
  import warnings
  import numpy
  import scipy
  from copy import deepcopy
  from sklearn.base import clone
  from sklearn.utils.validation import check_is_fitted
  from sklearn.base import BaseEstimator, TransformerMixin
  from joblib import Parallel, delayed
  from hyperopt import fmin, tpe
  from .utils import ParameterSampler, _check_param, _check_boosting
  from .utils import _set_categorical_indexes, _get_categorical_support
  from .utils import _feature_importances, _shap_importances
label_desc: Use image node_id 2 for calling the _Boruta obj's underlying member method code with example usage: obj._create_X(X, feat_id_real) and returns: X