如何在字典中创建所有可能的参数组合

How to create all possible combinations of parameters in a dictionaryP

我有以下词典:

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

我需要在 hyper_params 的所有可能参数组合上训练 sklearnLogisticRegression,例如:

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.

如何创建这 3 个参数的所有可能组合,以便我可以将它们作为 **args_comination 传递给 LogisticRegression

我无法使用超参数优化库。因此,我正在寻找一种自定义方法来枚举 hyper_params.

基于All combinations of a list of lists,您可以通过itertools.product()实现。所以:

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])

或者,如果这些是 LogisticRegression 函数中的位置参数,您甚至可以这样做:

for c in combinations:
    LogisticRegression(*c)