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您找到解决方案了吗?