使用数据块,我基本上从这里复制并粘贴了相同的代码:https://www.dataiku.com/learn/guide/code/python/advanced-xgboost-tuning.html

我收到此错误:

train = data.sample(frac=0.70, random_state=123)
valid = data.loc[~data.index.isin(train.index), :]

y_train = train['target']
X_train = train.drop(['target'], axis=1)
y_valid = test['target']
X_valid = test.drop(['target'], axis=1)
def objective(space):

    clf = xgb.XGBClassifier(n_estimators = 10000,
                            max_depth = space['max_depth'],
                            min_child_weight = space['min_child_weight'],
                            subsample = space['subsample'])

    eval_set  = [( train, y_train), ( valid, y_valid)]

    clf.fit(train[col_train], y_train,
            eval_set=eval_set, eval_metric="auc",
            early_stopping_rounds=30)

    pred = clf.predict_proba(valid)[:,1]
    auc = roc_auc_score(y_valid, pred)
    print("SCORE:", auc)

    return{'loss':1-auc, 'status': STATUS_OK }


space ={
        'max_depth': hp.quniform("x_max_depth", 5, 30, 1),
        'min_child_weight': hp.quniform ('x_min_child', 1, 10, 1),
        'subsample': hp.uniform ('x_subsample', 0.8, 1)
    }


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


print(best)


我得到的错误如下:

ValueError: invalid number of arguments
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<command-3897094> in <module>()
      4             algo=tpe.suggest,
      5             max_evals=100,
----> 6             trials=trials)
      7
      8

ValueError: invalid number of arguments



任何见识都会有所帮助。堆栈溢出的第一个问题!

最佳答案

您引用的博客Advanced XGBoost tuning in Python发布于2016年8月22日,如下图。

python - 我对使用xgboost的hyperopt包的fmin()函数有很大的了解-LMLPHP

我认为这是针对旧版本的,可能不适合使用最新版本的hyperopt软件包。

因此,请参见hyperopt的最新FMin Wiki页面。这是一个简单的示例代码,如下所示。

from hyperopt import fmin, tpe, hp
best = fmin(fn=lambda x: x ** 2,
    space=hp.uniform('x', -10, 10),
    algo=tpe.suggest,
    max_evals=100)
print best


您可以看到space类型应为hyperopt.pyll.Apply,而不是Python字典,请参见GitHub存储库中的code,如下图所示。

python - 我对使用xgboost的hyperopt包的fmin()函数有很大的了解-LMLPHP

10-06 05:19