On Fri, 25 Nov 2016 at 20:24 Roman Yurchak <rth.yurc...@gmail.com> wrote:
> On 24/11/16 09:00, Jaidev Deshpande wrote: > > > > well, `param_grid` in GridSearchCV can also be a list of > dictionaries, > > so you could directly specify the cases you are interested in > (instead > > of the full grid - exceptions), which might be simpler? > > > > > > Actually now that I think of it, I don't know if it will be necessarily > > simpler. What if I have a massive grid and only few exceptions? > > Enumerating the complement of that small subset would be much more > > expensive than specifying the exceptions. > The solution indicated by Raghav is most concise if that works for you. > > Otherwise, in general, if you want to define the parameters as the full > grid with a few exceptions, without changing the GirdSearchCV API, you > could always try something like, > > ``` > from sklearn.model_selection import GridSearchCV, ParameterGrid > from sklearn.neural_network import MLPClassifier > > grid_full = {'solver': ['sgd', 'adam'], > 'learning_rate': ['constant', 'invscaling', 'adaptive']} > > def exception_handler(args): > # custom function shaping the domain of valid parameters > if args['solver'] == 'adam' and args['learning_rate'] != 'constant': > return False > else: > return True > > def wrap_strings(args): > # all values of dicts provided to GridSearchCV must be lists > return {key: [val] for key, val in args.items()} > > grid_tmp = filter(exception_handler, ParameterGrid(grid_full)) > grid = [wrap_strings(el) for el in grid_tmp] > > gs = GridSearchCV(MLPClassifier(random_state=42), > param_grid=grid) > ``` > That's quite similar to what you were suggesting in the original post. > Yes, also a lot more concise I guess. This way I just have to keep writing an exception handler instead of subclassing. Thanks! > _______________________________________________ > scikit-learn mailing list > scikit-learn@python.org > https://mail.python.org/mailman/listinfo/scikit-learn >
_______________________________________________ scikit-learn mailing list scikit-learn@python.org https://mail.python.org/mailman/listinfo/scikit-learn