我有一个20列的训练数据集,所有这些都是我必须用来训练模型的因素,我已经给出了测试数据集,我必须将我的模型应用于预测并提交.
我正在进行初始数据探索,只是出于好奇心检查了训练数据和测试数据级别的水平,因为我们正在处理所有分类变量.令我沮丧的是,大多数类别(变量)在训练和测试数据集中都有不同的级别.
例如
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
在这里,我在测试数据集中有一个额外的类别,我如何处理这些情况,训练中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
在这里,我们有额外的因素
我是否应该首先在训练集上建立模型并找到重要的预测因子,然后担心因子水平?
最佳答案 具有不同的功能集违反了机器学习的基本规则.训练和测试数据必须代表相同的数据空间.这些不;虽然每对都有一个共同的特征内核(维度),但要在同一个模型上使用它们,你必须将每个集合减少到只有公共特征,或者扩展到特征的并集,填写“不要“关注”或语义空值的额外功能.