我正在使用R来构建预测模型。但是,predict
始终会向我提供错误消息,例如
我知道这应该是由于某些测试功能级别未包含在培训功能级别中引起的。由于特征矩阵本身很大,并且很难在测试数据集的特征矩阵中逐个修改特征级别。有没有办法强制测试数据集中的要素项级别适合现有级别的训练要素项。
答案 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
您很可能在您的情况下使用类似的方法,但我不确定您的数据的确切结构。