ParameterGrid 拆分字符串而不是组合

ParameterGrid splits the string instead of combination

我正在尝试获取用于模型选择的参数网格。因此,按照 Sklearn documentation about ParameterGrid function 中的示例,我们有:

param_grid = {'a': [1, 2], 'b': [True, False]}
list(ParameterGrid(param_grid)) == (
                [{'a': 1, 'b': True}, {'a': 1, 'b': False},
                 {'a': 2, 'b': True}, {'a': 2, 'b': False}])

但我想要的是只传递一个值,而不使用列表注释([]),就像这样:

param_grid = {'a': [1, 2], 'b': 'True', 'c': 'something'}

但是,list(ParameterGrid(param_grid)) 只是拆分所有字符串,而不是创建两个组合。结果:

{'a': 1, 'b': 'T', 'c': 's'}
{'a': 1, 'b': 'T', 'c': 'o'}
{'a': 1, 'b': 'T', 'c': 'm'}

问题是,所有项目都必须以列表格式列出,否则我遗漏了什么?

是的,您需要使用 [] 表示法,因为 ParameterGrid 期望值是可迭代的。因此,当您将 b 设置为

'b': 'True'

它将遍历字符串 'True',因此您将获得 T、R、U 和 E 的不同组合。

要解决这个问题,请像这样使用它

param_grid = {'a': [1, 2], 'b': [True], 'c': ['something']}