Проблема с Trials () при использовании Hyperopt? - PullRequest
0 голосов
/ 28 февраля 2019

Я пытаюсь использовать Hyperopt впервые для настройки гиперпараметров в Python.Я прочитал документацию и хочу попробовать это на классификаторе XgBoost.«X_train» и «y_train» - это фрейм данных после разбиения его на наборы тестирования и обучения.Вот мой код:

#Hyperopt Parameter Tuning
from hyperopt import hp, STATUS_OK, Trials, fmin, tpe
from sklearn.model_selection import cross_val_score


def objective(space):
  print(space)
  clf = xgb.XGBClassifier(objective = space[objective],
                     max_depth = int(space[max_depth]),
                     learning_rate = space[learning_rate],
                     n_estimators = space[n_estimators])


  #eval_set = [(X_train, y_train), (Xcv, Ycv)]
  clf.fit(X_train, y_train, eval_metric='auc',
         early_stopping_rounds=10, verbose=False)

  #pred = clf.predict(X_test)
  auc = cross_val_score(clf, X_train, y_train, cv=3)
  return{'auc':auc, 'status': STATUS_OK }




space = {'booster': 'gbtree',
         'objective': 'binary:logistic',
         'eval': 'auc',
         'max_depth': hp.quniform('max_depth', 1, 100, 5),
         'learning_rate': hp.loguniform('learning_rate', 0.2, 0.3),
         'n_estimators': hp.quniform('n_esimators', 5, 500, 10)}


trials = Trials()
best = fmin(fn=objective,
            space=space,
            algo=tpe.suggest,
            max_evals=3, # change
            trials=trials)

print(best)

Я получаю следующую ошибку, которая выделяет "trails = trails":

TypeError: ap_loguniform_sampler() got multiple values for argument 'size'

Я провел некоторые исследования и не смогнайти решение этой ошибки.Любая помощь будет отличной!

1 Ответ

0 голосов
/ 07 марта 2019

Согласно документу, hp.loguniform может принимать только 3 аргумента, как показано ниже.

hp.loguniform(label, low, high)

Это может быть причиной ошибки.Пожалуйста, проверьте.

...