Я сгенерировал некоторые входные параметры со значениями в виде диктов через GridSearchCV.
Входные параметры выглядят так:
In: print(grid_maxdepth, grid_min_samples_split, grid_max_leaf_nodes)
Out: {'max_depth': 4} {'min_samples_split': 14} {'max_leaf_nodes': 14}
Если я добавлю их как функцию kwarg в функцию регрессора, она прекрасно работает.
In: print(DecisionTreeRegressor(**grid_maxdepth, **grid_min_samples_split, **grid_max_leaf_nodes))
Out:
DecisionTreeRegressor(criterion='mse', max_depth=4, max_features=None,
max_leaf_nodes=14, min_impurity_decrease=0.0,
min_impurity_split=None, min_samples_leaf=1,
min_samples_split=14, min_weight_fraction_leaf=0.0,
presort=False, random_state=None, splitter='best')
Теперь, если я хочу сделать то же самое в следующей функции, она помещает переменные в неправильную позицию и в неправильном формате. Для примера, вместо использования max_depth=4
, он помещает диктат в критерий ("criterion={'max_depth': 4}")
.
In:
def test(*sss):
print(DecisionTreeRegressor(*sss))
test(grid_maxdepth, grid_min_samples_split, grid_max_leaf_nodes)
Out:
DecisionTreeRegressor(criterion={'max_depth': 4},
max_depth={'max_leaf_nodes': 14}, max_features=None,
max_leaf_nodes=None, min_impurity_decrease=0.0,
min_impurity_split=None, min_samples_leaf=1,
min_samples_split=2, min_weight_fraction_leaf=0.0,
presort=False, random_state=None,
splitter={'min_samples_split': 14})
Что такоеЯ делаю не так? Имейте в виду, что я новичок в использовании arg / kwarg, и я уже изучил эту статью: https://www.geeksforgeeks.org/args-kwargs-python/