在使用R预测函数时,新数据因子中的级别错误与原始数据不匹配

时间:2014-08-06 18:22:49

标签: r

我正在使用R来构建预测模型。但是,predict始终会向我提供错误消息,例如

enter image description here

我知道这应该是由于某些测试功能级别未包含在培训功能级别中引起的。由于特征矩阵本身很大,并且很难在测试数据集的特征矩阵中逐个修改特征级别。有没有办法强制测试数据集中的要素项级别适合现有级别的训练要素项。

1 个答案:

答案 0 :(得分:1)

以下是使测试变量与训练变量具有相同级别的示例:

test <- factor(LETTERS[1:5])
training <- factor(LETTERS[4:10])
levels(test)
#[1] "A" "B" "C" "D" "E"

尝试替换不存在级别的值:

test[2] <- training[5]
#Warning:
#  In `[<-.factor`(`*tmp*`, 2, value = 5L) :
#  invalid factor level, NA generated

你可以通过统一因子水平来解决这个问题:

levels(test) <- union(levels(test), levels(training))
levels(test)
#[1] "A" "B" "C" "D" "E" "F" "G" "H" "I" "J"
test
#[1] A B C D E
#Levels: A B C D E F G H I J

现在您可以在没有警告的情况下执行上一个操作:

test[2] <- training[5]
test
#[1] A H C D E
#Levels: A B C D E F G H I J

您很可能在您的情况下使用类似的方法,但我不确定您的数据的确切结构。