r - R - xgb.cv 之后的 xgb.importance
问题描述
我曾经在使用 R 构建 xgboost 模型后查看变量的重要性xgb.train()
。这是数据集的示例mtcars
。
library(xgboost)
library(tidyverse)
xgb_mtcars <- xgb.DMatrix(
data = mtcars[,-1] %>% as.matrix(),
label = mtcars$mpg
)
xgb_Param <- list(
booster = 'gbtree',
tree_method = 'hist',
eta = .3
)
xgb_mod_1 <- xgb.train(
data = xgb_mtcars,
params = xgb_Param,
nround = 50
)
xgb.importance(dimnames(xgb_mtcars)[[2]], model = xgb_mod_1) %>% head()
# Feature Gain Cover Frequency
# 1: cyl 0.43871401 0.01712283 0.03266788
# 2: wt 0.30334298 0.11487124 0.13611615
# 3: disp 0.18704847 0.40043144 0.34482759
# 4: hp 0.04358683 0.11298369 0.12522686
# 5: qsec 0.01397431 0.19091277 0.20689655
# 6: drat 0.01082511 0.08520965 0.10344828
今天,我尝试使用xgb.cv()
, 来对数据集进行 k-folds 并防止过度拟合。但是该功能xgb.importance()
不再起作用。在这个函数的帮助下,它表示模型需要来自xgb.train()。
xgb_mod_2 <- xgb.cv(
data = xgb_mtcars,
params = xgb_Param,
nfold = 3,
nround = 50
)
xgb.importance(dimnames(xgb_mtcars)[[2]], model = xgb_mod_2) %>% head()
# Error in xgb.importance(dimnames(xgb_mtcars)[[2]], model = xgb_mod_2) :
# model: must be an object of class xgb.Booster
问题:有没有办法计算变量重要性之后xgb.cv()
?或者也许只有一个倍的重要性。
我没有在互联网上找到任何东西。这是否意味着xgb.cv()
仅用于调整参数,然后,当“最佳”参数固定时,xgb.train()
需要再次运行?
解决方案
推荐阅读
- c++ - 控制台未正确读取输入字符串
- reactjs - 对象不能作为平面列表中的 React 子项有效吗?
- javascript - 从 JS 中的 Mail 接收到 header
- javascript - 隐藏 SSRS 授权
- android - 删除firebase实时数据库中的数据后如何更新我的listView
- swift - 如何使用 UISlider 更改 CIFilter 的强度?
- c++ - 提升精神分裂规则到不同的标题
- r - 特征误差(Sigma,对称 = TRUE):使用 zelig 逻辑回归的“x”中的值无限或缺失
- android - Firebase 在 addListenerForSingleValueEvent 上崩溃
- vba - 突出显示包含 Chr(10) 的单元格