Better documentation for `RFECV`

There is almost no description in the documentation of how `RFECV` actually works. The [user guide](https://scikit-learn.org/stable/modules/feature_selection.html#rfe) simply says

> [RFECV](https://scikit-learn.org/stable/modules/generated/sklearn.feature_selection.RFECV.html#sklearn.feature_selection.RFECV) performs RFE in a cross-validation loop to find the optimal number of features.

and the [API page](https://scikit-learn.org/stable/modules/generated/sklearn.feature_selection.RFECV.html) simply says

> Recursive feature elimination with cross-validation to select features. 

My best guess for what `RFECV` is actually doing is the following.

1. Start with all features.
2. Do the following (in either order):
    a) Fit the estimator on all rows of `X` (for the current subset of features). Use `coefs_` or `feature_importances_` or a callable to select the feature(s) that will be removed in the next round.
    b) Run cross-validation with the estimator on `X` to estimate the accuracy of the estimator trained on the current subset of features.
3. Remove the features chosen for removal in step 2a.
4. Repeat steps 2 and 3 until the minimum number of features has been reached.
5. Select the set of features that maximizes the CV scores calculated in step 2b. (This set of features is recorded in the `support_` attribute.)

Is that correct? Furthermore, can a detailed explanation of what `RFECV` is doing be added to the documentation?

COMMENT:
@CameronBieganek 

RFE is a feature selection algorithm which is used to reduce the number of features/columns in a dataset and to only select optimal number of features. It does this recursively. At the start it is unknown which features are important. To find optimal number of features cross-validation is used . We can select either k-fold cross validation which is the most
used method or refer to [scikit-learn cross-validation documentation .](https://scikit-learn.org/stable/modules/cross_validation.html#cross-validation)
`RFECV` is a wrapper type algorithm , which wraps around a machine learning algorithm and this algorithm then selects features. 
Working:
1.Starts with all the features in the dataset.
2.Then the algorithm is selected that would be used to select features which is also known as the estimator
3. we create an instance of RFECV class and pass it to the estimator and decide the number of folds for k-fold cross validation.
4.Then we perform model.fit
5.Ranks features by importance and selects features on the basis of score5. Eliminates the least important features 
6.Refits the model
7. _support is used to get a boolean array of the selected features.
8. These features are then used to train the model.

It performs process 1 through 6 recursively. Selection of features determines outcome of recursion.


The model used underneath could be something like a decision tree, random forests, SVM.
`RFECV` can also use statistical method to select optimal features.


RFE(recursive feature elimination) eliminates features by fitting the model multiple times at each step. The weakest features are either determined by` _coef `or `_feature_importance.`

RFE helps to reduce dimensionality of the dataset and improve the performance.

Above explanation is just an overview , `RFECV` can be described in more detail using various algorithms and cross validation methods and `RFECV` visualizer.

Labels: Documentation