【问题标题】:How to identify used variables in a statistical model in R如何在 R 的统计模型中识别使用的变量
【发布时间】:2019-09-02 10:22:33
【问题描述】:

我正在通过随机森林生成的模型预测数据。如何识别模型中使用的预测变量? 我无法摆脱错误:“评估错误(predvars,data,env):找不到对象'能源'”。

ENERGY 列是我试图预测的列,而不是在模型生成中用作变量。 并且 varImp(DATA)$importance 中不存在此列。

predict(model_RF2, newdata = predData)

eval 中的错误(predvars、data、env):找不到对象“能源”

varImp(DATA)$importance

作为此代码的回复,列出了 60 列的名称;并且 ENERGY 不在此向量中。

还有其他方法可以识别模型中使用的列吗?

【问题讨论】:

    标签: r model random-forest r-caret predict


    【解决方案1】:

    预测的重要部分是验证新数据框(在您的情况下为 predData)与原始数据具有相同的列名。 所以如果你的原始数据有 ENERGY 列,你必须确保你的 predData 也有它。

    在此处查看文档:https://www.rdocumentation.org/packages/rpart/versions/4.1-13/topics/predict.rpart

    引用:“newdata 数据框包含需要预测的值。公式(对象)右侧引用的预测器必须按名称存在于 newdata 中。”

    【讨论】:

    • 但这不是预测变量,而是我预测的列。
    • 1.我生成了一个线性模型,并将它的预测添加到数据(列名:LM) 2. 我生成了一个 RF 模型(也使用了新列“LM”),并将它的预测添加到数据(列名: RF1) 3. 我从我试图预测的列中生成了一个新列。 dataNUM$ener=dataNUM$ENERGY/dataNUM$col2*8000/log(dataNUM$col5+5) 4. 生成一个新模型预测 ener 并通过反转上述公式找到 ENERGY。 (此模型中未使用 RF1 和 LM 列)在 predData 中,我可以通过线性模型和第一个随机森林模型预测 ENERGY,但不能用第二个随机森林模型预测。
    【解决方案2】:

    RF 算法显示用于预测某个变量的重要性。但是,它没有显示将要预测的变量的重要性。由于您预测的是“能源”变量,因此您在列表中看不到它的名称是正常的。还;

    importance(model_RF2)
    

    varImpPlot(model_RF2)
    

    可以显示模型中使用的列(变量)。 varImpPlot 还描绘了一个漂亮的图表。

    【讨论】:

    • 由于我使用了 rf 的插入符号包,这两个函数都出现了错误。我用来生成模型的代码块是: ´´´r train(ener~. -ENERGY -LM -RF1 -LAPS , data=dataNUM, method="rf", metric=metric, ntree=10, tuneGrid=tunegrid, trControl=control,importance=T) ´´´ 错误:> 重要性(model_RF2)UseMethod 中的错误(“importance”):没有适用于“重要性”的适用方法应用于“c”类的对象(“t​​rain”,“train. formula')" > varImpPlot(model_RF2) varImpPlot(model_RF2) 中的错误:此函数仅适用于 `randomForest' 类的对象
    • 如果你能写出整个代码块,我可以提供更好的帮助。我不能说哪个是模型名称,哪个是您上面评论中的预测函数。如果在代码块前使用四个空格,会更好看更整洁。
    猜你喜欢
    • 2017-02-02
    • 2021-09-27
    • 1970-01-01
    • 2016-08-25
    • 2013-04-15
    • 2022-01-26
    • 1970-01-01
    • 1970-01-01
    • 2016-04-07
    相关资源
    最近更新 更多