r语言 - 如何处理虚拟功能



如果这个问题早点出现,我很抱歉,但我没有发现这样的东西。我对预测模型有问题。我想建立xgboost和随机森林。我使用的包要求在 xgboost 构造中,应该创建虚拟变量。问题是我是否应该使用虚拟集来构建两者?(即使森林可以处理计算并且不需要假人(?为了测试模型并进行比较,我还应该将训练集中的分类变量更改为假人,对吗?换句话说,我的训练集和测试集对于每个模型都必须相同?非常感谢您的帮助!

我猜您正在使用 mlr 包,因为您已使用 mlr 标记了您的问题。

无论如何,当你创建假人时

,你必须确保你的训练集不包含在测试集中的变量(当你创建假人时,这很容易发生(。否则,当您尝试对测试集进行预测时,您将遇到麻烦(因为经过训练的模型假设测试集至少具有相同的变量(。

除了创建假人,您还可以将分类变量转换为整数(如果我没记错的话,无论如何,这就是 xgboost 在内部所做的(。这就是为什么如果您使用 mlr 适合 xgboost 模型,我们被迫创建假人(见 https://github.com/mlr-org/mlr/issues/1561(。

如果你不想创建假人,你也可以这样做:

library(mlr)
lrn = makeLearner("regr.xgboost")
train(lrn, bh.task) # this gives you an error
lrn$properties = c(lrn$properties, "factors")
train(lrn, bh.task) # this works as xgboost supports factors

相关内容

  • 没有找到相关文章

最新更新