ParameterGrid разбивает строку вместо комбинации - PullRequest
0 голосов
/ 25 октября 2019

Я пытаюсь получить сетку параметров для выбора модели. Итак, следуя примеру в документации Sklearn о функции ParameterGrid , мы имеем следующее:

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

Но я хочу передать только одно значение, без использования аннотации списка ([]), напримерthis:

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'}

Вопрос в том, требуется ли поместить все элементы в формат списка, или я что-то упустил?

1 Ответ

1 голос
/ 28 октября 2019

Да, вам нужно использовать нотацию [], потому что ParameterGrid ожидает, что значения будут итеративными. Поэтому, когда вы устанавливаете b как

'b': 'True'

Он будет перебирать строку 'True', следовательно, вы получаете различные комбинации с T, R, U и E.

Исправитьэто, используйте это так

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