【问题标题】:different variables training/test set with 'randomForest' package带有“randomForest”包的不同变量训练/测试集
【发布时间】:2015-07-20 11:19:48
【问题描述】:

假设我有一个分类问题,想使用 R 中的 randomForest 包来解决这个问题。

在我的训练集中,我想添加一个第三个​​变量,var3,它是 var1 和 var2 的乘积。因此,训练集将包括 var1、var2、var3 和类变量。

但是,测试集中不存在这个 var3,因此,当我想测试我的模型时,randomForest 会出错:

random forest Error in eval(expr, envir, enclos) : object var3 not found

有没有办法解决这个问题?

【问题讨论】:

    标签: r random-forest


    【解决方案1】:

    使用公式接口构建模型规范中的产品:

        class_var ~ var1 + var2 + I(var1 * var2)
    

    I 函数意味着将计算乘积的值,而不是产生interaction 的结果,如果其中任何一个变量是字符或因子(并且基本上是空操作),这不是数值乘积当它们都是数字时)。这样做可能会出现问题:当 var1 和 var2 的值很大时,估计值周围的误差可能会主导计算。我想运行它可能更安全:

      class_var ~ var1 + var2 + I( scale(var1 * var2) )
    

    【讨论】:

    • 工作就像一个魅力,谢谢 :) 我玩过它,如果你想选择一个列,这也可以:class_var ~ var1 + var2 + I(df$varx)
    • 流程的哪个阶段?当df 是预期的评估框架时,似乎这样做只会使这变得更加复杂。可以使用:class_var ~ var1 + var2 + varx
    • 感谢您的跟进!这也是在训练过程中。当我按照您的建议进行操作时,我再次收到错误(找不到对象 varx),因为该变量不存在于测试集中。但是,添加交互我没有收到错误。
    • 我不明白,但听起来好像没关系,因为你有一个有效的过程。
    • 我可能解释错了嘿嘿。在这种情况下,我假设varx 是我想用来训练我的随机森林模型的某个变量。但是这个变量不包含在(单独的)测试集中。添加交互功能似乎可以解决问题!
    猜你喜欢
    • 2016-03-26
    • 1970-01-01
    • 1970-01-01
    • 2015-01-17
    • 2017-04-05
    • 2020-11-25
    • 2013-03-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多