我有一个训练数据集,包含20列因子,我需要用它们来训练模型。我还有一个测试数据集,需要将模型应用于其上进行预测并提交结果。
在进行初步数据探索时,出于好奇心,我检查了训练数据和测试数据中因为所有变量都是类别变量而产生的级别(levels)。令我失望的是,大多数类别(变量)在训练和测试数据集中的级别不同。
例如
table(train$cap.shape) #training data column levels
b c f k x
196 4 2356 828 2300
table(test$cap.shape) #test data
b f s x
256 796 32 1356
这里我有一个测试数据集中的额外类别s,我该如何处理这些情况?训练集中c的额外类别非常低,因此我想根据其与相关变量的分布情况将其与其他因素合并,但我不知道如何处理测试中的额外级别。
更多例子
table(train$odor) #train
c f m n p s y
189 2155 36 2150 2 576 576
table(test$odor) #test
a c f l n p
400 3 5 400 1378 254
在这个栏中,我们在测试中有2个额外的级别,并且在测试数据集中有大量实例。我该如何处理这些差异。
table(train$sColour) #train
b h k n o r w y
48 1627 700 753 48 72 2388 48
table(test$sColour) #test
h k n u
5 1172 1215 48
这里我们有额外的因素u
我是不是应该先在训练集上建立一个模型,找到重要的预测变量,然后再考虑因子水平?