【问题标题】:random forest: error in dealing with factor levels in R随机森林:处理 R 中的因子水平时出错
【发布时间】:2015-10-20 12:17:15
【问题描述】:

我在R 中使用rf 模型来预测二进制结果0 或1。我的输入数据中有分类变量(编码为数字),这些变量在训练时被编码为因子。我使用R 中的factor() 函数将变量转换为因子。所以对于每一个分类变量x,我的代码都是这样的。

feature_x1=factor(feature_x1) # Convert the variable into factor in training data. 
#This variable takes 3 levels 0,1,2

这在训练模型时效果很好。让我们假设我的模型对象是rf_model。在仅是数字向量的新数据上运行模型时。我首先将数字转换为 feature_x1 的因子

newdata=data.frame(1,2)
colnames(newdata)=c("feature_x1","feature_x2")
newdata$feature_x1=factor(newdata$feature_x1)
score=pred(rf_model,newdata,type="prob")

我收到以下错误

predict.randomForest(rf_model, newdata,type = "prob") 中的错误: 训练数据中不存在新的因子水平

如何处理这个错误,因为实际上,在训练模型之后,我们总是需要处理结果未知的数据,这只是一条记录。

如果需要更清晰的代码或代码,请告诉我

【问题讨论】:

    标签: r random-forest prediction r-factor


    【解决方案1】:

    试试

    newdata$feature_x1 <- factor(newdata$feature_x1, levels=levels(feature_x1))
    

    【讨论】:

    • 说出您在问题中尝试过的内容总是更友好,特别是如果您的示例不是独立的。我相信当您使示例可运行时会弹出更多答案。
    • 感谢它现在正在工作。它以前不起作用的原因是因为我在代码中使用 as.data.frame() 而不是 data.frame()
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-29
    • 1970-01-01
    • 1970-01-01
    • 2019-01-29
    • 2021-03-23
    相关资源
    最近更新 更多