R 如何处理虚拟特征

R 如何处理虚拟特征,r,machine-learning,prediction,data-science,mlr,R,Machine Learning,Prediction,Data Science,Mlr,我很抱歉,如果这个问题早些被提出来,但我没有发现这样的问题。 我对预测模型有问题。 我想建立xgboost和random forest。 我使用的包要求在xgboost构造中创建虚拟变量。 问题是我是否应该使用一个虚拟集来构建这两者?(即使森林可以处理计算,不需要假人)? 为了测试模型并进行比较,我还应该将列车组中的分类变量更改为假人,对吗? 换句话说,我的培训集和测试集对于每个型号都必须相同? 非常感谢你的帮助 我猜您使用的是mlr软件包,因为您已经用mlr标记了您的问题 无论如何,在创建假人

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

我猜您使用的是
mlr
软件包,因为您已经用mlr标记了您的问题

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

您还可以将分类变量转换为整数(如果我没有弄错的话,xgboost内部就是这样做的),而不是创建假人。这就是为什么如果您将xgboost模型与mlr匹配,我们将强制创建假人(请参阅)

如果不想创建假人,也可以执行以下操作:

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

我猜您使用的是
mlr
包,因为您已经用mlr标记了您的问题

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

您还可以将分类变量转换为整数(如果我没有弄错的话,xgboost内部就是这样做的),而不是创建假人。这就是为什么如果您将xgboost模型与mlr匹配,我们将强制创建假人(请参阅)

如果不想创建假人,也可以执行以下操作:

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

您应该使用R中构建的函数来构造正确的矩阵形式。我敢肯定,其他问题都有答案。也许你只需要在
model.matrix
factor
上进行更全面的搜索。这里有一个机器学习stackexchange论坛。这里可能有一些有用的问答,但我投票决定结束这篇文章,因为太广泛了。@42-先生访问了你的个人资料。你真是太棒了。还可以检查
library(caret)
中的
dummyVars
函数。你应该使用R中的函数来构造正确的矩阵形式。我敢肯定,其他问题都有答案。也许你只需要在
model.matrix
factor
上进行更全面的搜索。这里有一个机器学习stackexchange论坛。这里可能有一些有用的问答,但我投票决定结束这篇文章,因为太广泛了。@42-先生访问了你的个人资料。您真是太棒了。另外,请检查
库(插入符号)
中的
dummyVars
函数。