#python #dataframe #dictionary #grid-search
#python #фрейм данных #словарь #поиск по сетке
Вопрос:
Я хочу создать сетку параметров из словаря, каждый ключ — это имя параметра, и они содержат список значений. Я хочу объединить все значения между ними.
params = {'k1': [1, 2, 3], 'k2': [10, 20, 30]}
В R я могу создать его, расширяя список с помощью expand.grid
. И это создает data.frame:
> params <- list("k1" = c(1, 2, 3), "k2" = c(10, 20, 30))
> params
# $k1
# [1] 1 2 3
#
# $k2
# [1] 10 20 30
> expand.grid(params)
# k1 k2
# 1 1 10
# 2 2 10
# 3 3 10
# 4 1 20
# 5 2 20
# 6 3 20
# 7 1 30
# 8 2 30
# 9 3 30
Есть ли способ сделать это простым способом в Python?
Obs. Мне нужно создать это data.frame
. Я не буду использовать GridSearchCV
.
Ответ №1:
Порядок будет немного отличаться, но это работа для itertools.product
:
from itertools import product
pd.DataFrame(product(*params.values()), columns=params.keys())
k1 k2
0 1 10
1 1 20
2 1 30
3 2 10
4 2 20
5 2 30
6 3 10
7 3 20
8 3 30
В более старых версиях pandas вам может потребоваться сначала указать продукт в списке:
df = pd.DataFrame(list(product(*params.values())), columns=params.keys())