Проблема с Trials() при использовании Hyperopt?
Я пытаюсь использовать 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', np.log(0.1), np.log(0.2), np.log(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'
Я провел некоторое исследование и не смог найти решение этой ошибки. Любая помощь будет отличной!
0 ответов
Согласно документу, hp.loguniform может принимать только 3 аргумента, как показано ниже.
hp.loguniform(label, low, high)
Это может быть причиной ошибки. Пожалуйста, проверьте.