class_docstr: Exhaustive Feature Selection for Classification and Regression.
     (new in v0.4.3)
  
  Parameters
  ----------
  estimator : scikit-learn classifier or regressor
  
  min_features : int (default: 1)
      Minumum number of features to select
  
  max_features : int (default: 1)
      Maximum number of features to select. If parameter `feature_groups` is not
      None, the number of features is equal to the number of feature groups, i.e.
      `len(feature_groups)`. For  example, if `feature_groups = [[0], [1], [2, 3],
      [4]]`, then the `max_features` value cannot exceed 4.
  
  print_progress : bool (default: True)
      Prints progress as the number of epochs
      to stderr.
  
  scoring : str, (default='accuracy')
      Scoring metric in {accuracy, f1, precision, recall, roc_auc}
      for classifiers,
      {'mean_absolute_error', 'mean_squared_error',
      'median_absolute_error', 'r2'} for regressors,
      or a callable object or function with
      signature ``scorer(estimator, X, y)``.
  
  cv : int (default: 5)
      Scikit-learn cross-validation generator or `int`.
      If estimator is a classifier (or y consists of integer class labels),
      stratified k-fold is performed, and regular k-fold cross-validation
      otherwise.
      No cross-validation if cv is None, False, or 0.
  
  n_jobs : int (default: 1)
      The number of CPUs to use for evaluating different feature subsets
      in parallel. -1 means 'all CPUs'.
  
  pre_dispatch : int, or string (default: '2*n_jobs')
      Controls the number of jobs that get dispatched
      during parallel execution if `n_jobs > 1` or `n_jobs=-1`.
      Reducing this number can be useful to avoid an explosion of
      memory consumption when more jobs get dispatched than CPUs can process.
      This parameter can be:
      None, in which case all the jobs are immediately created and spawned.
          Use this for lightweight and fast-running jobs,
          to avoid delays due to on-demand spawning of the jobs
      An int, giving the exact number of total jobs that are spawned
      A string, giving an expression as a function
          of n_jobs, as in `2*n_jobs`
  
  clone_estimator : bool (default: True)
      Clones estimator if True; works with the original estimator instance
      if False. Set to False if the estimator doesn't
      implement scikit-learn's set_params and get_params methods.
      In addition, it is required to set cv=0, and n_jobs=1.
  
  fixed_features : tuple (default: None)
      If not `None`, the feature indices provided as a tuple will be
      regarded as fixed by the feature selector. For example, if
      `fixed_features=(1, 3, 7)`, the 2nd, 4th, and 8th feature are
      guaranteed to be present in the solution. Note that if
      `fixed_features` is not `None`, make sure that the number of
      features to be selected is greater than `len(fixed_features)`.
      In other words, ensure that `k_features > len(fixed_features)`.
  
  feature_groups : list or None (default: None)
      Optional argument for treating certain features as a group.
      This means, the features within a group are always selected together,
      never split.
      For example, `feature_groups=[[1], [2], [3, 4, 5]]`
      specifies 3 feature groups.In this case,
      possible feature selection results with `k_features=2`
      are `[[1], [2]`, `[[1], [3, 4, 5]]`, or `[[2], [3, 4, 5]]`.
      Feature groups can be useful for
      interpretability, for example, if features 3, 4, 5 are one-hot
      encoded features.  (For  more details, please read the notes at the
      bottom of this docstring).  New in mlxtend v. 0.21.0.
  
  Attributes
  ----------
  best_idx_ : array-like, shape = [n_predictions]
      Feature Indices of the selected feature subsets.
  
  best_feature_names_ : array-like, shape = [n_predictions]
      Feature names of the selected feature subsets. If pandas
      DataFrames are used in the `fit` method, the feature
      names correspond to the column names. Otherwise, the
      feature names are string representation of the feature
      array indices. New in v 0.13.0.
  
  best_score_ : float
      Cross validation average score of the selected subset.
  
  subsets_ : dict
      A dictionary of selected feature subsets during the
      exhaustive selection, where the dictionary keys are
      the lengths k of these feature subsets. The dictionary
      values are dictionaries themselves with the following
      keys: 'feature_idx' (tuple of indices of the feature subset)
            'feature_names' (tuple of feature names of the feat. subset)
            'cv_scores' (list individual cross-validation scores)
            'avg_score' (average cross-validation score)
      Note that if pandas
      DataFrames are used in the `fit` method, the 'feature_names'
      correspond to the column names. Otherwise, the
      feature names are string representation of the feature
      array indices. The 'feature_names' is new in v. 0.13.0.
  
  Notes
  -----
  (1) If parameter `feature_groups` is not None, the
  number of features is equal to the number of feature groups, i.e.
  `len(feature_groups)`. For  example, if `feature_groups = [[0], [1], [2, 3],
  [4]]`, then the `max_features` value cannot exceed 4.
  
  (2) Although two or more individual features may be considered as one group
  throughout the feature-selection process, it does not mean the individual
  features of that group have the same impact on the outcome. For instance, in
  linear regression, the coefficient of the feature 2 and 3 can be different
  even if they are considered as one group in feature_groups.
  
  (3) If both fixed_features and feature_groups are specified, ensure that each
  feature group contains the fixed_features selection. E.g., for a 3-feature set
  fixed_features=[0, 1] and feature_groups=[[0, 1], [2]] is valid;
  fixed_features=[0, 1] and feature_groups=[[0], [1, 2]] is not valid.
  
  (4) In case of KeyboardInterrupt, the dictionary subsets may not be completed.
  If user is still interested in getting the best score, they can use method
  `finalize_fit`.
  
  Examples
  -----------
  For usage examples, please see
  https://rasbt.github.io/mlxtend/user_guide/feature_selection/ExhaustiveFeatureSelector/
docstr: Fit to training data and return the best selected features from X.
  
  Parameters
  ----------
  X : {array-like, sparse matrix}, shape = [n_samples, n_features]
      Training vectors, where n_samples is the number of samples and
      n_features is the number of features.
      New in v 0.13.0: pandas DataFrames are now also accepted as
      argument for X.
  y : array-like, shape = [n_samples]
      Target values.
  groups : array-like, with shape (n_samples,), optional
      Group labels for the samples used while splitting the dataset into
      train/test set. Passed to the fit method of the cross-validator.
  fit_params : dict of string -> object, optional
      Parameters to pass to to the fit method of classifier.
  
  Returns
  -------
  Feature subset of X, shape={n_samples, k_features}
docstr_tok: ["Fit","to","training","data","and","return","the","best","selected","features","from","X.","Parameters","--","--","--","--","--","X",":","{","array-like",",","sparse","matrix","}",",","shape","=","[","n_samples",",","n_features","]","Training","vectors",",","where","n_samples","is","the","number","of","samples","and","n_features","is","the","number","of","features",".","New","in","v","0.13.0",":","pandas","DataFrames","are","now","also","accepted","as","argument","for","X.","y",":","array-like",",","shape","=","[","n_samples","]","Target","values",".","groups",":","array-like",",","with","shape","(","n_samples",",",")",",","optional","Group","labels","for","the","samples","used","while","splitting","the","dataset","into","train\/test","set",".","Passed","to","the","fit","method","of","the","cross-validator",".","fit_params",":","dict","of","string","-",">","object",",","optional","Parameters","to","pass","to","to","the","fit","method","of","classifier",".","Returns","--","--","--","-","Feature","subset","of","X",",","shape=","{","n_samples",",","k_features","}"]
code: def fit_transform(self, X, y, groups=None, **fit_params):
      """Fit to training data and return the best selected features from X.
  
      Parameters
      ----------
      X : {array-like, sparse matrix}, shape = [n_samples, n_features]
          Training vectors, where n_samples is the number of samples and
          n_features is the number of features.
          New in v 0.13.0: pandas DataFrames are now also accepted as
          argument for X.
      y : array-like, shape = [n_samples]
          Target values.
      groups : array-like, with shape (n_samples,), optional
          Group labels for the samples used while splitting the dataset into
          train/test set. Passed to the fit method of the cross-validator.
      fit_params : dict of string -> object, optional
          Parameters to pass to to the fit method of classifier.
  
      Returns
      -------
      Feature subset of X, shape={n_samples, k_features}
  
      """
      self.fit(X, y, groups=groups, **fit_params)
      return self.transform(X)
  
imports: import operator
  import sys
  import types
  from copy import deepcopy
  from functools import reduce
  from itertools import chain, combinations
  import numpy
  import scipy
  import scipy.stats
  from joblib import Parallel, delayed
  from sklearn.base import BaseEstimator, MetaEstimatorMixin, clone
  from sklearn.metrics import get_scorer
  from ..externals.name_estimators import _name_estimators
  from .utilities import _calc_score, _get_featurenames, _merge_lists, _preprocess
label_desc: Use image node_id 5 for calling the ExhaustiveFeatureSelector obj's underlying member method code with example usage: obj.fit_transform(X, y, groups) and returns: self