R 函数的作用是:检测交互并使用xgboost返回异常
R 函数的作用是:检测交互并使用xgboost返回异常,r,xgboost,interaction,R,Xgboost,Interaction,xgb.fi()是一个新函数,它与xgboost一起工作,用于检测变量之间的交互 文档可在此处找到: 这是一个重要的主题,我试图测试该函数,但遇到了一个异常 有关可复制的示例,请参见下文: library(data.table) library(xgboost) library(RXGBfi) data(mtcars) X = as.matrix(mtcars[, -9]) Y = mtcars$am dtrain = xgb.DMatrix(data = X, label = Y)
xgb.fi()
是一个新函数,它与xgboost一起工作,用于检测变量之间的交互
文档可在此处找到:
这是一个重要的主题,我试图测试该函数,但遇到了一个异常
有关可复制的示例,请参见下文:
library(data.table)
library(xgboost)
library(RXGBfi)
data(mtcars)
X = as.matrix(mtcars[, -9])
Y = mtcars$am
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)
features = names(mtcars)[-9]
xgb.fi(model = model, features = features)
Listening on http://127.0.0.1:7333
Warning: Error in :=: Check that is.data.table(DT) == TRUE. Otherwise, := and `:=`(...) are defined for use in j, once only and in particular ways. See help(":=").
Stack trace (innermost first):
95: :=
94: [.data.frame
93: [.data.table
92: [
91: tableVars1
90: base::rownames
89: datatable
88: eval
87: eval
86: %>%
85: exprFunc
84: widgetFunc
83: func
82: origRenderFunc
81: renderFunc
80: origRenderFunc
79: output$tableVars1
4: <Anonymous>
3: do.call
2: print.shiny.appobj
1: <Promise>
库(data.table)
图书馆(xgboost)
图书馆(RXGBfi)
数据(mtcars)
X=作为矩阵(mtcars[,-9])
Y=mtcars$am
dtrain=xgb.DMatrix(数据=X,标签=Y)
型号=xgb.列车(数据=数据列车,
eval=“auc”,
verbose=0,maximize=TRUE,
参数=列表(objective=“binary:logistic”,
eta=0.1,
最大深度=6,
子样本=0.8,
λ=0.1),
nrounds=10)
特征=名称(mtcars)[-9]
xgb.fi(型号=型号,特性=特性)
倾听http://127.0.0.1:7333
警告:错误:=:检查是否为.data.table(DT)==TRUE。否则,:=和`:=`(…)只定义一次并以特定方式在j中使用。请参阅帮助(“:=”)。
堆栈跟踪(最里面的第一个):
95: :=
94:[.data.frame
93:[.data.table
92: [
91:表格1
90:base::rownames
89:数据表
88:评估
87:评估
86: %>%
85:exprFunc
84:widgetFunc
83:func
82:origRenderFunc
81:renderFunc
80:origRenderFunc
79:输出$tableVars1
4:
当我测试您的代码时,我得到了与您相同的错误。
因此,我决定深入研究函数xgb.fi(),我将源代码复制到这里:并逐行执行它,以识别我们在闪亮的应用程序中看到的错误
当我这样做时,它工作正常……因此我执行了整个函数,以便重写函数xgb.fi()(它出现在我的Rstudio环境中),然后我再次运行代码。这次,它运行得非常完美
[your code, with the xgboost model]
xgb.fi <- function(model, xgbfi.loc = "C:/xgbfi", features = NULL, max.interaction.depth = 2,
max.deepening = -1, max.trees = -1, top.k = 100, max.histograms = 10) {
library(xgboost)
xgbfi_exe <- paste0(xgbfi.loc, "/", "bin", "/", "XgbFeatureInteractions.exe")
featureVector <- c()
[...]
}
xgb.fi(model = model, features = features)
[您的代码,使用xgboost型号]
xgb.fi您找到解决方案了吗?