相关疑难解决方法(0)

R中的xgboost:xgb.cv如何将最佳参数传递给xgb.train

我一直在探索xgboostR中的软件包,并经历了几个演示以及教程,但这仍然让我感到困惑:在使用xgb.cv交叉验证之后,最佳参数如何传递给xgb.train?或者我应该根据输出计算理想参数(例如nround,max.depth)xgb.cv

param <- list("objective" = "multi:softprob",
              "eval_metric" = "mlogloss",
              "num_class" = 12)
cv.nround <- 11
cv.nfold <- 5
mdcv <-xgb.cv(data=dtrain,params = param,nthread=6,nfold = cv.nfold,nrounds = cv.nround,verbose = T)

md <-xgb.train(data=dtrain,params = param,nround = 80,watchlist = list(train=dtrain,test=dtest),nthread=6)
Run Code Online (Sandbox Code Playgroud)

r machine-learning prediction xgboost

33
推荐指数
2
解决办法
3万
查看次数

如何将预测应用于 xgboost 交叉验证

经过一段时间的谷歌搜索后,我觉得这可能是一个荒谬的问题,但事实就是如此。如果我使用以下代码,我可以生成一个 xgb 回归模型,然后我可以用它来拟合训练集并评估模型

xgb_reg = xgb.XGBRegressor(objective='binary:logistic',
                           gamme = .12, 
                           eval_metric = 'logloss',
                           #eval_metric = 'auc', 
                           eta = .068,
                           subsample = .78,
                           colsample_bytree = .76,
                           min_child_weight = 9,
                           max_delta_step = 5,
                           nthread = 4)

start = time.time()
xgb_reg.fit(X_train, y_train)
print(start-time.time())

y_pred = xgb_reg.predict(X_test)
print(log_loss(y_test, y_pred))
Run Code Online (Sandbox Code Playgroud)

现在,我想更进一步并使用 kfold cv 来改进模型,所以我有这个

data_dmatrix = xgb.DMatrix(data=X_train,label=y_train)
params = {'objective':'binary:logistic','eval_metric':'logloss','eta':.068,
          'subsample':.78,'colsample_bytree':.76,'min_child_weight':9,
          'max_delta_step':5,'nthread':4}
xgb_cv = cv(dtrain=data_dmatrix, params=params, nfold=5, num_boost_round=20, metrics = 'logloss',seed=42) 
Run Code Online (Sandbox Code Playgroud)

但是,这会输出一个数据框,并且我无法在测试集上使用 .predict() 。

我想我可能不理解这个的基本概念,但我希望我只是忽略了一些简单的事情。

python scikit-learn xgboost

11
推荐指数
1
解决办法
2万
查看次数

标签 统计

xgboost ×2

machine-learning ×1

prediction ×1

python ×1

r ×1

scikit-learn ×1