我有一个数据集,其中包含一个关于对某人称呼的特征向量,例如Mr, Mrs等。我使用这个特征向量来预测这些人的年龄,但我的训练集中并不包含我在测试集中看到的所有值。我考虑过将测试集和训练集中这个特定特征向量的值结合起来的方法,但我不想这样做,我认为这是作弊,因为我们在训练集中使用了来自测试集的信息。我非常希望能得到一些关于如何解决这个问题的建议。
训练集中存在的所有值:
levels(as.factor(x$Salutation)) [1] "Capt" "Col" "Countess" "Don" "Dr" "Jonkheer" "Lady" "Major" "Master" "Miss" "Mlle" "Mme" "Mr" "Mrs" "Ms" "Rev" "Sir"
测试集中存在的所有值:
levels(as.factor(y$Salutation))[1] "Col" "Dona" "Dr" "Master" "Miss" "Mr" "Mrs" "Ms" "Rev"
当我尝试在测试集上预测年龄时,称呼“Dona”会搞乱我的决策树
回答:
正如@BondedDust指出的那样,我们无法知道“Dona”可能意味着什么。然而,您可以将这样的观察标记为“NA”,这是决策树可以处理的。然后,根据您的问题表述,您可以
- 对于那些称呼为NA的人,输出NA年龄
- 对于那些称呼为NA的人,代入总体年龄平均值
- 可能地,对于测试集中称呼为NA的人,代入训练集中称呼为NA的人的平均年龄
什么是合适的取决于数据来源、是否有其他变量、评估指标等。