有人可以帮我解决以下问题:我需要将带有插入符号包的xgboost训练模型更改为默认指标RMSLE。默认情况下,插入符号和xgboost在RMSE中训练和测量。
以下是代码行:
custom_summary = function(data, lev = NULL, model = NULL){
out = rmsle(data[, "obs"], data[, "pred"])
names(out) = c("rmsle")
out
}
control = trainControl(method = "cv",
number = 2,
summaryFunction = custom_summary)
grid = expand.grid(nrounds = 100,
max_depth = 6,
eta = 0.075,
gamma = 0,
colsample_bytree = 0.4,
min_child_weight = 2.25,
subsample = 1)
cl = makeCluster(3, type="SOCK") #make clusters
registerDoSNOW(cl) #register clusters
set.seed(1)
caret4 = train(price_doc~. - sub_area - id,
data=train.train,
method="xgbTree",
trControl=control,
tuneGrid=grid,
metric="rmsle",
maximize = FALSE)
答案 0 :(得分:0)
我的项目中也遇到了同样的问题。 即使使用以下命令在内存中加载Metrics包之后也是如此 的库(指标)强>
如果你看到,rmsle函数是从另一个名为custom_summary的函数调用的。它不是直接调用的。 所以我从函数custom_summary中加载了Metrics包,它解决了我的问题。
所以这里,custom_summary函数应该如下所示:
custom_summary = function(data,lev = NULL,model = NULL){
的库(指标)强>
out = rmsle(数据[," obs"],数据[," pred"]) name(out)= c(" rmsle")
出
}