当前位置: 首页 > 知识库问答 >
问题:

随机森林的动态响应变量

汪晟睿
2023-03-14

我正在尝试创建一个动态ML应用程序,允许用户上传一个数据集,以使用随机林模型预测数据集中的第一列。

我在使用randomforest()函数时遇到了问题,特别是当我试图将响应变量指定为数据集的第一列时。对于下面的示例,我使用iris数据集,并将响应变量Species移动到第一列中。

这是我的尝试:

model <- randomForest(names(DATA[1]) ~ ., data = DATA, ntree = 500, mtry = 3, importance = TRUE)

然而,这不起作用。我得到的错误是:

错误:可变长度不同(针对“物种”找到)

只有当我像这样手动指定响应变量时,该应用程序和函数似乎才能工作:

model <- randomForest(Species ~ ., data = DATA, ntree = 500, mtry = 3, importance = TRUE)

我试图使用粘贴()函数来施展一些魔法,但没有成功。

我应该如何编写代码才能让它工作?

共有1个答案

景德海
2023-03-14

看起来您想从字符串构建一个公式。您可以使用valparse来做到这一点。这样的东西应该可以工作:

model <- randomForest(eval(parse(text = paste(names(DATA)[1], "~ ."))), 
                      data = DATA, ntree = 500, mtry = 3, importance = TRUE)

使用原始虹膜数据集的示例:

model <- randomForest(eval(parse(text = paste(names(iris)[5], "~ ."))), 
                      data = iris, ntree = 500, mtry = 3, importance = TRUE)

model

Call:
 randomForest(formula = eval(parse(text = paste(names(iris)[5],      "~ ."))), data = iris, 
              ntree = 500, mtry = 3, importance = TRUE) 
           Type of random forest: classification
                 Number of trees: 500
No. of variables tried at each split: 3

        OOB estimate of  error rate: 4%
Confusion matrix:
           setosa versicolor virginica class.error
setosa         50          0         0        0.00
versicolor      0         47         3        0.06
virginica       0          3        47        0.06
 类似资料:
  • 我有一个随机森林,目前建立在100个不同的变量之上。我希望能够只选择“最重要”的变量来构建我的随机森林,以尝试提高性能,但我不知道从哪里开始,除了从rf$重要性中获得重要性。 我的数据只是由数字变量组成,这些变量都经过了缩放。 以下是我的射频代码:

  • 我想用随机森林方法创建火灾发生概率图。我的响应变量是一个光栅,其中包含每个网格单元的年平均燃烧面积。我的解释变量是多个光栅(温度、海拔、土地利用和人口密度)。是否可以使用光栅作为响应变量,以及基本代码线的外观如何?我找不到这方面的任何信息。 到目前为止,我的代码也是如此,但我得到了一个错误:as中的错误。数据框架默认值(数据):无法将“结构(“RasterStack”,package=“raste

  • 考虑一个数据集训练: 二元结果变量z和三个水平的分类预测因子a:1、2、3。 现在考虑一个数据集测试: 当我运行以下代码时: 我收到以下错误消息: 我假设这是因为测试数据集中的变量a没有三个级别。我该如何解决这个问题?

  • 是否可以使用插入符号用多变量响应变量调整随机林(

  • 随机森林是集成学习中可以和梯度提升树GBDT分庭抗礼的算法,尤其是它可以很方便的并行训练,在如今大数据大样本的的时代很有诱惑力。 1. bagging的原理 在集成学习原理小结中,我们给Bagging画了下面一张原理图。 从上图可以看出,Bagging的弱学习器之间的确没有boosting那样的联系。它的特点在“随机采样”。那么什么是随机采样? 随机采样(bootsrap)就是从我们的训练集里面采

  • 在随机森林方法中,创建了大量决策树。 每个观察都被送入每个决策树。 每次观察的最常见结果用作最终输出。 一个新的观察结果被输入所有树木,并对每个分类模型进行多数投票。 对构建树时未使用的情况进行错误估计。 这称为OOB (Out-of-bag)错误估计,以百分比形式提及。 R包"randomForest"用于创建随机森林。 安装R包 在R控制台中使用以下命令安装程序包。 您还必须安装依赖包(如果有