首先,我是XGBoost的新手。所以请原谅我的愚蠢。
这是一个问题:
如何将dgCMatrix分成两个矩阵(比如火车和测试)?我的目标是使用这些矩阵进行XGBoost训练。当我使用单热编码将所有分类变量转换为数值变量时,我得到了dgCMatrix。我可以在训练数据集和测试数据集上单独进行单热编码吗?
我已经尝试过dummyVars(来自包的插入符号)进行单热编码,但我的R会话由于某种原因而被中止,我不知道。
在这里添加DexGroves的评论作为答案,因为它回答了这个问题。
即使您将数据集拆分为两个(例如,A和B),即使某些级别在A或B中不存在,有关因子的所有级别的信息也将存储在A和B中。所以当您对子集进行一次热编码,它编码所有级别,而不管子级中是否存在级别。它在下一个子集上使用相同的编码。