【发布时间】:2017-03-24 23:48:39
【问题描述】:
我有一个 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
这里我在测试数据集中有一个额外的类别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 因子
我应该先在训练集上建立一个模型并找到重要的预测变量,然后再考虑因子水平吗?
【问题讨论】:
-
@Tchotchke 我不想删除测试中的额外因素,我想知道如何处理这些额外因素,以便模型不会抛出错误。
-
@Tchotchke 是不是应该结合测试和训练数据并重构所有列然后再次拆分数据?
-
你说得对,这是我的误解。你的提议是有道理的。不过,我对您的数据提出的一个更大的问题是,测试集和训练集似乎具有极其不同的分布(至少在这些因素方面),因此这可能是一项艰巨的建模任务。
-
@Tchotchke 是的,这个事实也让我感到不安,我合并了训练和测试数据集以使因子水平相等并获得 71 % 的准确度,所以任何想法如何处理建模时我们有这样的分类分布?
标签: r machine-learning classification random-forest categorical-data