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

R-随机森林没有正确加载

贺宜修
2023-03-14

我在加载随机森林模型并将其应用于带有栅格::预测的栅格时遇到问题。

通常,当我在R会话中创建随机森林模型时,键入其名称并点击回车,我会收到以下打印输出:

> rf_model
Call:
 randomForest(formula = AGB_mean ~ B1_med + B2_med + B4_med +      B5_med + B6_med + B7_med + B1_sd + B2_sd + B4_sd + B5_sd +      B6_sd + B7_sd + NDVI + EVI + EVI2, data = all.training, importance = TRUE, na.action = na.roughfix) 
               Type of random forest: regression
                     Number of trees: 500
No. of variables tried at each split: 5

          Mean of squared residuals: 4866.287
                    % Var explained: 52.48

当我使用predict将此会话内模型应用于光栅时,我可以进行成功的预测。

当我改为使用readRDS加载保存的随机林模型并键入模型名称时,如下所示:

> rf_model <- readRDS('model.rds')
> rf_model

我收到rf_model中所有信息的完整打印件(即rf_model$call,rf_model$type...rf_model美元术语),当我尝试进行预测时,我收到以下错误:

Error in UseMethod("predict") : 
  no applicable method for 'predict' applied to an object of class "c('randomForest.formula', 'randomForest')"

在正确加载随机森林对象时,我是否遗漏了什么?

共有2个答案

罗建弼
2023-03-14

您需要导入随机林库,以便可以使用随机林对象的预测方法,如下所示:

library(randomForest)
rf_model <- readRDS('model.rds')
predict(rf_model)

即使您已在RDS文件中保存了一个随机森林实例,与随机森林实例关联的函数方法也不会保存在该RDS文件中,需要从库本身加载。

白越
2023-03-14

例如:

library(randomForest)
rf_model <- randomForest(Species ~ .,data=iris)
saveRDS(rf_model,'model.rds')
quit()

如果我再次启动R,我需要加载库:

rf_model <- readRDS('model.rds')
predict(rf_model)
Error in UseMethod("predict") : 
  no applicable method for 'predict' applied to an object of class "c('randomForest.formula', 'randomForest')"

library(randomForest)
head(predict(rf_model))

     1      2      3      4      5      6 
setosa setosa setosa setosa setosa setosa 
Levels: setosa versicolor virginica
 类似资料:
  • 主要内容:安装R包 - randomForest,语法,示例在随机森林方法中,创建了大量的决策树。每个观察结果都被送入每个决策树。 每个观察结果最常用作最终输出。对所有决策树进行新的观察,并对每个分类模型进行多数投票。 对于在构建树时未使用的情况进行错误估计。 这被称为OOB(Out-of-bag)错误估计,以百分比表示。 R中的软件包用于创建随机林。 安装R包 - randomForest 在R控制台中使用以下命令安装软件包,还必须安装其它依赖软件包(如

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

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

  • 1 Bagging   Bagging采用自助采样法(bootstrap sampling)采样数据。给定包含m个样本的数据集,我们先随机取出一个样本放入采样集中,再把该样本放回初始数据集,使得下次采样时,样本仍可能被选中, 这样,经过m次随机采样操作,我们得到包含m个样本的采样集。   按照此方式,我们可以采样出T个含m个训练样本的采样集,然后基于每个采样集训练出一个基本学习器,再将这些基本学习

  • 我有一个随机森林,目前建立在100个不同的变量之上。我希望能够只选择“最重要”的变量来构建我的随机森林,以尝试提高性能,但我不知道从哪里开始,除了从rf$重要性中获得重要性。 我的数据只是由数字变量组成,这些变量都经过了缩放。 以下是我的射频代码:

  • 我的挑战是我不能使用随机森林的可变重要性特性,因为我的大多数特性都与它们最近的过去有高度的相关性。例如,一个移动平均数跨越了一个几天的窗口,这意味着它包含了我的数据集中的多个观察的信息。 这意味着随机森林生成的袋外样本将与随机森林用来训练我的模型的样本内特征相关联。因此,我从中得到的变量重要性将是高度乐观和过度适应的。 我看到的解决方案是以某种方式计算样本外测试集上的变量重要性,而不是使用OOB交