GridSearchCV.verbose documentation does not match actual behavior (values >3, >10)

### Describe the issue linked to the documentation

[`GridSearchCV` docs ](https://scikit-learn.org/1.7/modules/generated/sklearn.model_selection.GridSearchCV.html) state

> **verbose** int
> Controls the verbosity: the higher, the more messages.
> \>1 : the computation time for each fold and parameter candidate is displayed;
> \>2 : the score is also displayed;
> \>3 : the fold and candidate parameter indexes are also displayed together with the starting time of the computation.

In reality, this param is passed to joblib [here](https://github.com/scikit-learn/scikit-learn/blob/d3898d9d57aeb1e960d266613a2e31b07bca39d7/sklearn/model_selection/_search.py#L1009), whose [docs](https://joblib.readthedocs.io/en/latest/generated/joblib.Parallel.html) state:
> **verbose**: int, default=0
> The verbosity level: if non zero, progress messages are printed. Above 50, the output is sent to stdout. The frequency of the messages increases with the verbosity level. If it more than 10, all iterations are reported.

Testing with the MRE below shows that 0 is silent, 1 prints one line, 2 prints a line for each CV split. 3-9 are all the same. 10-inf are all the same

### MRE:
```python
from sklearn.model_selection import GridSearchCV
from sklearn.linear_model import LogisticRegression
from sklearn.datasets import make_classification

X, y = make_classification()

clf = LogisticRegression(max_iter=100)

param_grid = {"C": [1, 2]}

for v in [0, 1, 2, 3, 9, 10, 1000]:
    print(f"\n=======  verbose={v}  ======= ")
    gs = GridSearchCV(
        clf,
        param_grid,
        cv=2,
        n_jobs=1,
        verbose=v,
    )
    gs.fit(X, y)
```

It is possible taht the same issue exists elsewhere, I've not looked thoroughly

### Suggest a potential alternative/fix

Update docs to match observed behaviour, e.g.:

> **verbose** int
> Controls the verbosity: the higher, the more messages.
> 0 : no messages;
> 1 : a single line describing the number of folds, the number of candidates, and the number of fits;
> 2 : the above, plus when each fold ends, the computation time for that fold and parameter candidate is displayed;
> 3-9 : the above, plus the fold index and the score is also displayed;
> ≥10 : an additional message for the start of each fold, and the candidate parameter indexes are also displayed.

COMMENT:
> TBH it feels like verbose could be simplified. 

It felt the same to me. Though I am not sure about the historical or practical reasons of why the verbose output is the way it is. That would have to be researched.

> I'd also argue that which param candidate index is more important than which fold index, so that the progress of a large grid search can be tracked. 

Not sure I follow. We need to comply to the order of the training. The CV folds are in the outer loop and we cannot change their order. So an output like

```diff
+ [Cand 1/2, CV 1/2] 
+ [Cand 1/2, CV 2/2] 
+ [Cand 2/2, CV 1/2] 
+ [Cand 2/2, CV 2/2] 
```

doesn't seem possible, **if**  we keep the verbosity logging-like (which we do want), so it gets displayed **real time** to track progress.

That doesn't mean the verbosity output could not be improved.

> I guess it depends on whether there is appetite for changing behaviour vs simply fixing docs.

Yes, exactly. I think we can do the quick doc fix right now, and revise the verbose outputs in a subsequent PR. I am not sure if changing the verbosity right now will be an uncomplicated matter. There likely will be some discussion and exchange of opinions on a PR trying this, also with regard to the callback loggings. But maybe it's a straightforward thing. 🤷‍♀️ 
I'm happy to review a PR if you want to give it a try.

Labels: Documentation