如何在字典中创建所有可能的参数组合
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
的所有可能参数组合上训练 sklearn
的 LogisticRegression
,例如:
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)
我有以下词典:
hyper_params = {'penalty': ['l1', 'l2'], 'class_weight': [None, 'balanced'], 'max_iter': [500, 1000]}
我需要在 hyper_params
的所有可能参数组合上训练 sklearn
的 LogisticRegression
,例如:
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)