learning curve does not work in incremental mode with MLPRegressor

### Describe the bug

It looks as though incremental learning via the learning_curve method assumes that the estimator accepts a classes argument in **partial_fit**

### Steps/Code to Reproduce

```py
from sklearn.datasets import make_regression
from sklearn.neural_network import MLPRegressor
x,y = make_regression()

from sklearn.model_selection import learning_curve
learning_curve(MLPRegressor(),x,y,exploit_incremental_learning=hasattr(MLPRegressor,'partial_fit'))
```

### Expected Results

Fit should be successful ass MLPRegressor has a partial fit method

### Actual Results

```
TypeError                                 Traceback (most recent call last)
<ipython-input-82-c72fafe6f81e> in <module>
----> 1 lc = learning_curve(mlp,x,y,exploit_incremental_learning=hasattr(mlp,'partial_fit'))

...virtual_env/lib/python3.9/site-packages/sklearn/utils/validation.py in inner_f(*args, **kwargs)
     61             extra_args = len(args) - len(all_args)
     62             if extra_args <= 0:
---> 63                 return f(*args, **kwargs)
     64 
     65             # extra_args > 0

...virtual_env/lib/python3.9/site-packages/sklearn/model_selection/_validation.py in learning_curve(estimator, X, y, groups, train_sizes, cv, scoring, exploit_incremental_learning, n_jobs, pre_dispatch, verbose, shuffle, random_state, error_score, return_times, fit_params)
   1381     if exploit_incremental_learning:
   1382         classes = np.unique(y) if is_classifier(estimator) else None
-> 1383         out = parallel(delayed(_incremental_fit_estimator)(
   1384             clone(estimator), X, y, classes, train, test, train_sizes_abs,
   1385             scorer, verbose, return_times, error_score=error_score,

...virtual_env/lib/python3.9/site-packages/joblib/parallel.py in __call__(self, iterable)
   1039             # remaining jobs.
   1040             self._iterating = False
-> 1041             if self.dispatch_one_batch(iterator):
   1042                 self._iterating = self._original_iterator is not None
   1043 

...virtual_env/lib/python3.9/site-packages/joblib/parallel.py in dispatch_one_batch(self, iterator)
    857                 return False
    858             else:
--> 859                 self._dispatch(tasks)
    860                 return True
    861 

...virtual_env/lib/python3.9/site-packages/joblib/parallel.py in _dispatch(self, batch)
    775         with self._lock:
    776             job_idx = len(self._jobs)
--> 777             job = self._backend.apply_async(batch, callback=cb)
    778             # A job can complete so quickly than its callback is
    779             # called before we get here, causing self._jobs to

...virtual_env/lib/python3.9/site-packages/joblib/_parallel_backends.py in apply_async(self, func, callback)
    206     def apply_async(self, func, callback=None):
    207         """Schedule a func to be run"""
--> 208         result = ImmediateResult(func)
    209         if callback:
    210             callback(result)

...virtual_env/lib/python3.9/site-packages/joblib/_parallel_backends.py in __init__(self, batch)
    570         # Don't delay the application, to avoid keeping the input
    571         # arguments in memory
--> 572         self.results = batch()
    573 
    574     def get(self):

...virtual_env/lib/python3.9/site-packages/joblib/parallel.py in __call__(self)
    260         # change the default number of processes to -1
    261         with parallel_backend(self._backend, n_jobs=self._n_jobs):
--> 262             return [func(*args, **kwargs)
    263                     for func, args, kwargs in self.items]
    264 

...virtual_env/lib/python3.9/site-packages/joblib/parallel.py in <listcomp>(.0)
    260         # change the default number of processes to -1
    261         with parallel_backend(self._backend, n_jobs=self._n_jobs):
--> 262             return [func(*args, **kwargs)
    263                     for func, args, kwargs in self.items]
    264 

...virtual_env/lib/python3.9/site-packages/sklearn/utils/fixes.py in __call__(self, *args, **kwargs)
    220     def __call__(self, *args, **kwargs):
    221         with config_context(**self.config):
--> 222             return self.function(*args, **kwargs)

...virtual_env/lib/python3.9/site-packages/sklearn/model_selection/_validation.py in _incremental_fit_estimator(estimator, X, y, classes, train, test, train_sizes, scorer, verbose, return_times, error_score, fit_params)
   1496                                   **fit_params)
   1497         else:
-> 1498             estimator.partial_fit(X_partial_train, y_partial_train,
   1499                                   classes=classes, **fit_params)
   1500         fit_time = time.time() - start_fit

TypeError: _partial_fit() got an unexpected keyword argument 'classes'
```

Note: I have intentionally replaced the full path with the alias **..virtual_env**

### Versions

```shell
System:
    python: 3.9.1 (default, Dec 11 2020, 06:28:49)  [Clang 10.0.0 ]
executable: ..virtual_env/bin/python
   machine: macOS-10.16-x86_64-i386-64bit

Python dependencies:
          pip: 21.3
   setuptools: 49.2.1
      sklearn: 0.24.0
        numpy: 1.22.0
        scipy: 1.7.1
       Cython: 0.29.24
       pandas: 1.3.0
   matplotlib: 3.4.3
       joblib: 1.0.0
threadpoolctl: 2.2.0

Built with OpenMP: True
```

COMMENT:
Brilliant, so fast. Thanks Thomas.

Labels: Bug, module:model_selection