首页 文章

R - 基于多个字段(因子)进行预测,但不是整个数据帧

提问于
浏览
0

好的,我有一个数据框,包含对9个变量的250个观测值 . 为简单起见,我们只标记它们A - I.

我已经完成了所有标准的东西(将事物转换为int或factor,创建数据分区,测试和训练集等) .

我想要做的是使用A列和B列,并预测列E.我不想使用整个九列,只有这三列才能进行预测 .

我只尝试使用预测中的有限列,如下所示:

myPred <- predict(rfModel, newdata=myData)

其中rfModel是我的模型,myData只包含我想要使用的两个字段,作为数据帧 . 不幸的是,我收到以下错误:

predict.randomForest(rfModel,newdata = myData)中的错误:newdata中缺少训练数据中的变量

老实说,我对R很新,我甚至不确定这是否可行 . 我认为我正在收集的数据(九个字段)对于“训练”非常重要,但我无法弄清楚如何仅使用“结果”字段(在本例中为字段E)进行预测,另外两个字段(A和B),并保留其他重要数据 .

任何意见是极大的赞赏 . 如有必要,我可以发布一些代码 .

我只是想了解更多关于这样的事情 .

2 回答

  • 0

    假设您使用随机森林方法:

    library(randomForest)
    model <- randomForest(E ~ A+ B - c(C,D,F,G,H,I), data = train) 
    pred <- predict(model, newdata = test)
    

    正如您在此示例中所看到的,只有A和B列用于构建模型,其他列将从模型构建中删除(但不会从数据集中删除) . 如果你想要包括所有这些(E~ . ) . 这也意味着如果您基于所有列构建模型,您需要在测试集中包含这些列,如果没有它们,预测将无法工作 . 如果测试数据只有A和B列,则必须根据它们构建模型 .

    希望它有所帮助

  • 0

    正如我在上面的评论中提到的,也许您应该仅使用 AB 列来构建模型 . 如果你不想这样做,那么一个解决方法可能就是在调用 predict 时简单地使用其他列的中值 . 像这样的东西:

    myData <- cbind(data[, c("A", "B)], median(data$C), median(data$D), median(data$E),
                    median(data$F), median(data$G), median(data$H), median(data$I))
    myPred <- predict(rfModel, newdata=myData)
    

    这将允许您使用当前模型,使用9个预测变量构建 . 当然,除了 AB 之外,您将假设所有预测变量的平均行为,这可能与仅在 AB 上构建的模型的行为不同 .

相关问题