xgb.create.features 在 R 中的 xgboost returns 异常
xgb.create.features in xgboost in R returns exception
在尝试应用包含在 R 中的 xgboost 包中并在用户手册中介绍的 xgb.create.features(model, data, ...)
函数时,我 运行 陷入了一个我不明白的异常。这是一个可重现的例子:
library(xgboost)
data(mtcars)
X = as.matrix(mtcars[, -9])
Y = mtcars$am
dtrain = xgb.DMatrix(data = X, label = Y)
model = xgb.train(data = dtrain,
feval = performance_fun_F,
verbose =0, maximize = TRUE,
params = list(objective = "binary:logistic",
eta = 0.1,
max_depth = 6,
subsample = 0.8,
lambda = 0.1 ),
nrounds = 10)
dtrain1 = xgb.create.features(model, dtrain)
Error: not-yet-implemented method for cbind2(<xgb.DMatrix>, <dgCMatrix>).
->> Ask the package authors to implement the missing feature.
Traceback:
1. xgb.create.features(model, dtrain)
2. cBind(data, sparse.model.matrix(~. - 1, cols))
3. base::cbind(..., deparse.level = deparse.level)
4. cbind(deparse.level, ...)
5. cbind2(..1, r)
6. cbind2(..1, r)
7. .bail.out.2(.Generic, class(x), class(y))
8. stop(gettextf("not-yet-implemented method for %s(<%s>, <%s>).\n ->> Ask the package authors to implement the missing feature.",
. fun, cl1[1L], cl2[1L]), call. = FALSE, domain = NA)
您应该将矩阵 X
提供给 xgb.create.features
而不是 dtrain
:
示例:
library(xgboost)
data(mtcars)
X = as.matrix(mtcars[, -9])
dtrain = xgb.DMatrix(data = X, label = Y)
model = xgb.train(data = dtrain,
eval = "auc",
verbose =0, maximize = TRUE,
params = list(objective = "binary:logistic",
eta = 0.1,
max_depth = 6,
subsample = 0.8,
lambda = 0.1 ),
nrounds = 10)
dtrain1 = xgb.create.features(model, X)
dtrain1 = xgb.DMatrix(data = dtrain1, label = Y)
现在:
bst <- xgb.train(data = dtrain1,
eval = "auc",
verbose =0, maximize = TRUE,
params = list(objective = "binary:logistic",
eta = 0.1,
max_depth = 6,
subsample = 0.8,
lambda = 0.1 ),
nrounds = 10)
在尝试应用包含在 R 中的 xgboost 包中并在用户手册中介绍的 xgb.create.features(model, data, ...)
函数时,我 运行 陷入了一个我不明白的异常。这是一个可重现的例子:
library(xgboost)
data(mtcars)
X = as.matrix(mtcars[, -9])
Y = mtcars$am
dtrain = xgb.DMatrix(data = X, label = Y)
model = xgb.train(data = dtrain,
feval = performance_fun_F,
verbose =0, maximize = TRUE,
params = list(objective = "binary:logistic",
eta = 0.1,
max_depth = 6,
subsample = 0.8,
lambda = 0.1 ),
nrounds = 10)
dtrain1 = xgb.create.features(model, dtrain)
Error: not-yet-implemented method for cbind2(<xgb.DMatrix>, <dgCMatrix>).
->> Ask the package authors to implement the missing feature.
Traceback:
1. xgb.create.features(model, dtrain)
2. cBind(data, sparse.model.matrix(~. - 1, cols))
3. base::cbind(..., deparse.level = deparse.level)
4. cbind(deparse.level, ...)
5. cbind2(..1, r)
6. cbind2(..1, r)
7. .bail.out.2(.Generic, class(x), class(y))
8. stop(gettextf("not-yet-implemented method for %s(<%s>, <%s>).\n ->> Ask the package authors to implement the missing feature.",
. fun, cl1[1L], cl2[1L]), call. = FALSE, domain = NA)
您应该将矩阵 X
提供给 xgb.create.features
而不是 dtrain
:
示例:
library(xgboost)
data(mtcars)
X = as.matrix(mtcars[, -9])
dtrain = xgb.DMatrix(data = X, label = Y)
model = xgb.train(data = dtrain,
eval = "auc",
verbose =0, maximize = TRUE,
params = list(objective = "binary:logistic",
eta = 0.1,
max_depth = 6,
subsample = 0.8,
lambda = 0.1 ),
nrounds = 10)
dtrain1 = xgb.create.features(model, X)
dtrain1 = xgb.DMatrix(data = dtrain1, label = Y)
现在:
bst <- xgb.train(data = dtrain1,
eval = "auc",
verbose =0, maximize = TRUE,
params = list(objective = "binary:logistic",
eta = 0.1,
max_depth = 6,
subsample = 0.8,
lambda = 0.1 ),
nrounds = 10)