Я пытаюсь выполнить поиск в сетке по нескольким параметрам, чтобы получить мой набор данных.
Я заметил, что параметры, которые я передаю моей функции xgboost
, не принимаются. Например, результат моей модели alg.get_params()
это
{'colsample_bytree': 1, 'gamma': 0, 'learning_rate': 0.1, 'max_depth': 3, 'n_estimators': 100, 'objective': 'multi:softmax', 'reg_alpha': 0, 'reg_lambda': 1}
Я определил простой словарь для параметров следующим образом:
xgb_params = {
'maxdepth':[8],
'objective':['multi:softmax'],
'n_estimators':[600, 900, 1200],
'gamma':[0, .1, .2],
'lambda':[.5, 1, 3],
'alpha':[.5, 1, 2],
'num_class':[3],
#Other parameters
}
Фактическая передача параметров обрабатывается с помощью функции gridsearch
, как показано ниже:
alg = XGBClassifier()
grid_search = GridSearchCV(estimator = alg, param_grid=xgb_params, scoring='accuracy', cv=4, verbose=1)
grid_search.fit(X_train, y_train)
Не уверен, куда я иду не так. Проведя некоторое исследование, многие авторы предлагают использовать hyperopt
для оптимизированного поиска / настройки гиперпараметров, однако я пытаюсь понять, в чем я ошибаюсь, используя свой текущий подход.