Chcę zoptymalizować hiperparametry XGboost za pomocą krzyżowej walidacji. Jednak nie jest jasne, jak uzyskać model z xgb.cv
. Na przykład dzwonię do objective (params)
z fmin
. Następnie model jest zakładany na dtrain
i sprawdzany na dvalid
. Co jeśli chcę użyć krzyżowej walidacji KFold zamiast uczenia się na dtrain
?
z hyperopt import fmin, tpeimport xgboost as xgbparams = {'n_estimators': hp.quniform ( 'n_estimators', 100, 1000, 1), 'eta': hp.quniform ('eta', 0,025, 0,5, 0,025), 'max_depth': hp.quniform ('max_depth', 1, 13, 1) #. ..} best = fmin (objective, space = params, algo = tpe.suggest) def goal (params): dtrain = xgb.DMatrix (X_train, label = y_train) dvalid = xgb.DMatrix (X_valid, label = y_valid) watchlist = [(dtrain, 'train'), (dvalid, 'eval')] model = xgb.train (params, dtrain, num_boost_round, evals = watchlist, feval = myFunc) # xgb.cv (param, dtrain, num_boost_round, nfold = 5, seed = 0, # feval = myFunc)