如果测试数据只有用于训练 xgboost 模型的特征的子集,会不会有问题?我的所有预测变量(1 除外)都是因子,因此在将其转换为 xgb.DMatrix 之前完成了一次热编码。因此,因子变量的不同级别成为特征,我的测试没有所有这些特征,只有其中的一个子集。
目前,在 R 中对测试数据运行我的模型时,我遇到了一个错误,提示“存储在对象和新数据中的特征名称不同!”。
我是该领域的新手,所以任何帮助将不胜感激。谢谢!
如果测试数据只有用于训练 xgboost 模型的特征的子集,会不会有问题?我的所有预测变量(1 除外)都是因子,因此在将其转换为 xgb.DMatrix 之前完成了一次热编码。因此,因子变量的不同级别成为特征,我的测试没有所有这些特征,只有其中的一个子集。
目前,在 R 中对测试数据运行我的模型时,我遇到了一个错误,提示“存储在对象和新数据中的特征名称不同!”。
我是该领域的新手,所以任何帮助将不胜感激。谢谢!
用于训练模型的所有变量都必须存在于测试集中。
这是因为您使用了所有变量来创建规则。因此,我们需要那些为他们评分。
如果您使用 python 在 sklearn 中使用 fit 或 fit_transform 函数进行热编码,您将使用相同的对象使用 transform 函数转换测试集。
这将确保变量在测试和训练中保持一致。