Я пробовал несколько разных вещей, но не могу избавиться от этого сообщения об ошибке. Не вижу, чем мой код отличается от многих других сценариев.
y_train = train$y
train$y = c()
train= as.matrix(train)
train = xgb.DMatrix(data = train, label = y_train)
MSE = function(yhat,train){
y = getinfo(train, "label")
err = mean((y-yhat)^2)
return(list(metric = "RMSE", value = err))
}
params = list(
eta = 0.1,
max_depth = 3,
tweedie_variance_power = 1.5,
objective = "reg:tweedie",
feval = MSE
)
model = xgb.cv(
data = train,
nfold = 3,
params = params,
nrounds = 2000
)
Я получаю следующую ошибку:
Error in as.character(x) :
cannot coerce type 'closure' to vector of type 'character'
Я считаю трассировку немного странной (см. Ниже). Я использую пользовательские сгибы, и xgb.cv запускается, если я удаляю fevl и вместо этого использую встроенный nloglike eval metri c.
> traceback()
7: FUN(X[[i]], ...)
6: lapply(p, function(x) as.character(x)[1])
5: `xgb.parameters<-`(`*tmp*`, value = params)
4: xgb.Booster.handle(params, list(dtrain, dtest))
3: FUN(X[[i]], ...)
2: lapply(seq_along(folds), function(k) {
dtest <- slice(dall, folds[[k]])
dtrain <- slice(dall, unlist(folds[-k]))
handle <- xgb.Booster.handle(params, list(dtrain, dtest))
list(dtrain = dtrain, bst = handle, watchlist = list(train = dtrain,
test = dtest), index = folds[[k]])
})
1: xgb.cv(data = train, folds = folds, params = params, nrounds = 2000)
Есть предложения?