web-dev-qa-db-fra.com

Sklearn, gridsearch: comment imprimer la progression lors de l'exécution?

J'utilise GridSearch de sklearn pour optimiser les paramètres du classificateur. Il y a beaucoup de données, donc tout le processus d'optimisation prend du temps: plus d'une journée. Je voudrais voir les performances des combinaisons de paramètres déjà essayées pendant l'exécution. C'est possible?

51
doubts

Définissez le paramètre verbose dans GridSearchCV sur un nombre positif (plus le nombre est élevé, plus vous obtiendrez de détails). Par exemple:

GridSearchCV(clf, param_grid, cv=cv, scoring='accuracy', verbose=10)  
66
DavidS

Regarde ça:

https://pactools.github.io/auto_examples/plot_grid_search.html?highlight=gridsearchcvprogressbar

Je viens de le trouver maintenant et je l'utilise. Très dedans:

In [1]: GridSearchCVProgressBar
Out[1]: pactools.grid_search.GridSearchCVProgressBar

In [2]:

In [2]: ??GridSearchCVProgressBar
Init signature: GridSearchCVProgressBar(estimator, param_grid, scoring=None, fit_params=None, n_jobs=1, iid=True, refit=True, cv=None, verbose=0, pre_dispatch='2*n_jobs', error_score='raise', return_train_score='warn')
Source:
class GridSearchCVProgressBar(model_selection.GridSearchCV):
    """Monkey patch Parallel to have a progress bar during grid search"""

    def _get_param_iterator(self):
        """Return ParameterGrid instance for the given param_grid"""

        iterator = super(GridSearchCVProgressBar, self)._get_param_iterator()
        iterator = list(iterator)
        n_candidates = len(iterator)

        cv = model_selection._split.check_cv(self.cv, None)
        n_splits = getattr(cv, 'n_splits', 3)
        max_value = n_candidates * n_splits

        class ParallelProgressBar(Parallel):
            def __call__(self, iterable):
                bar = ProgressBar(max_value=max_value, title='GridSearchCV')
                iterable = bar(iterable)
                return super(ParallelProgressBar, self).__call__(iterable)

        # Monkey patch
        model_selection._search.Parallel = ParallelProgressBar

        return iterator
File:           ~/anaconda/envs/python3/lib/python3.6/site-packages/pactools/grid_search.py
Type:           ABCMeta

In [3]: ?GridSearchCVProgressBar
Init signature: GridSearchCVProgressBar(estimator, param_grid, scoring=None, fit_params=None, n_jobs=1, iid=True, refit=True, cv=None, verbose=0, pre_dispatch='2*n_jobs', error_score='raise', return_train_score='warn')
Docstring:      Monkey patch Parallel to have a progress bar during grid search
File:           ~/anaconda/envs/python3/lib/python3.6/site-packages/pactools/grid_search.py
Type:           ABCMeta
6
O.rka