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. _______________________________________________ scikit-learn mailing list scikit-learn@python.org https://mail.python.org/mailman/listinfo/scikit-learn