【问题标题】:Retrain Random Forest with new Data用新数据重新训练随机森林
【发布时间】:2021-07-06 01:39:34
【问题描述】:

我创建了一个随机森林

library(randomForest)
...
rf_default <- train(Species~., 
                      data=test, 
                      method='rf', #random forest
                      metric='Accuracy', 
                      tuneGrid=tunegrid, 
                      ntree=100,
                      trControl=control)

rf_default$finalModel

rf_default$finalModel 现在包含具有最佳参数的模型。现在,我想用新数据重新训练具有最佳参数的模型(类似于scikit 中的*.fit())。我该怎么做?

编辑

我遵循here 描述的方法:我尝试使用 CV 来查找超参数,然后,我想使用它们在完整的训练集上创建模型

【问题讨论】:

  • rf_default$finalModel 接受了您作为数据参数提供的所有数据的训练。如果这不能回答您的问题,那么我不确定我是否理解您为什么要使用在一个数据集上优化的超参数来在另一个数据集上训练模型?
  • 我不知道 - 请添加为答案以便我检查
  • 你可以使用predict(rf_default, new_data)这种方式,如果你执行了任何预处理,它也会在new_data上执行。

标签: r random-forest r-caret


【解决方案1】:

正如@missuse 所说,rf_default$finalModel 只是建立在您放入train 的整个数据集之上,无论使用何种重采样方法。

library(caret)
train <- iris[ind,]
test <- iris[-ind,]
control <- trainControl(method = "cv",number = 10)
tunegrid <- expand.grid(mtry=2:(ncol(iris)-1))
rf_default <- train(Species~., 
                data=train, 
                method='rf', #random forest
                metric='Accuracy', 
                tuneGrid=tunegrid, 
                ntree=100,
                trControl=control)

rf_default$finalModel
#assessing the accuracy against the test set
confusionMatrix(predict(rf_default,test[,-5]),test$Species)

在上面的代码中,rf_default$finalModel 在整个数据集train 上进行训练。 如果你想在整个 iris 数据集上拟合另一个模型,使用之前模型调整中找到的最佳超参数,你可以这样做:

rf_whole <- train(Species~., 
               data=iris, 
               method='rf', #random forest
               metric='Accuracy', 
               tuneGrid=rf_default$bestTune, 
               ntree=100,
               trControl=control)

【讨论】:

    猜你喜欢
    • 2019-07-20
    • 2017-01-22
    • 2018-06-13
    • 2012-10-25
    • 1970-01-01
    • 2013-08-30
    • 1970-01-01
    • 1970-01-01
    • 2013-02-13
    相关资源
    最近更新 更多