Home > database >  How to create all possible combinations of parameters in a dictionaryP
How to create all possible combinations of parameters in a dictionaryP

Time:03-16

I have the following dictionary:

hyper_params = {'penalty': ['l1', 'l2'], 'class_weight': [None, 'balanced'], 'max_iter': [500, 1000]}

I need to train LogisticRegression of sklearn on all possible combinations of parameters from hyper_params, e.g.:

from sklearn.linear_model import LogisticRegression

LogisticRegression(penalty='l1', class_weight=None, max_iter=500)
LogisticRegression(penalty='l2', class_weight=None, max_iter=500)
etc.

How can I create all possible combinations of these 3 parameters, so that I can pass them as **args_comination to LogisticRegression.

I cannot use the hyperparameters optimisation library. Therefore I'm searching for a custom approach to enumerate hyper_params.

CodePudding user response:

Based on All combinations of a list of lists you can achieve this by itertools.product(). So:

import itertools

hyper_params = {
    'penalty': ['l1', 'l2'],
    'class_weight': [None, 'balanced'],
    'max_iter': [500, 1000]
}


a = hyper_params.values()
combinations = list(itertools.product(*a))

for c in combinations:
    LogisticRegression(penalty=c[0], class_weight=c[1], max_iter=c[2])

Or if those are positional arguments in your LogisticRegression function you can even do:

for c in combinations:
    LogisticRegression(*c)
  • Related