Manter a estrutura do objeto da funcao randomForest

Pessoal estou com uma dúvida quanto o pacote randomForest do R. Usei a função randomForest para modelar o meu conjunto de dados. Como irei aplicar o modelo já treinado para meu conjunto teste, salvei como .rda. Na próxima etapa iria subir o treino (.rda) para rodar o banco de dados independente. Porém, a forma como salvei está dando erro quando aplico a função predict. É como se o load ou a extensão .rda não conservasse o formato do banco de dados. E o erro é que o objeto "model" deveria ser um randomForest e ele fica como "character". Eu sei que eu poderia usar o que foi salvo na memoria do R, o modelCT, esse se usar no predict não daria erro. Mas para cada novo conjunto de dados independente, não gostaria de ficar treinando a todo o momento, gostaria de passar somente os parâmetros já treinados. Como um código executável para exemplificar o problema usei o da Iris. library(randomForest) modelCT <- randomForest::randomForest(Sepal.Length ~ ., data = iris, importance = TRUE) # modelagem com randomForest str(modelCT) save(modelCT, file = "model.rda") # salvei como rda model = load("model.rda") # Faço a chamada do arquivo treinado .rda str(model) predValid <- randomForest::predict(model, iris, type = "class") # o banco de dados deveria ser independente, mas aqui é somente para mostrar o erro do formato como está o model predValid <- predict(model, iris, type = "class")

O resultado da função `load` não deve ser designado a um objeto. Faça as seguintes alterações no teu código e tudo deve rodar como esperado: library(randomForest) modelCT <- randomForest(Sepal.Length ~ ., data = iris, importance = TRUE) # modelagem com randomForest str(modelCT) save("modelCT", file = "model.rda") # salvei como rda rm(list = ls()) # apenas para apagar o workspace e mostrar que, de fato, o modelo ajustado foi carregado a partir do arquivo .rda load("model.rda") str(modelCT) # o modelo ajustado precisa ser chamado pelo nome seu original predValid <- predict(modelCT, iris, type = "class") -- Marcus Nunes Professor Adjunto Universidade Federal do Rio Grande do Norte Centro de Ciências Exatas e da Terra Departamento de Estatística Laboratório de Estatística Aplicada marcus@marcusnunes.me https://marcusnunes.me/ http://shiny.estatistica.ccet.ufrn.br http://lea.estatistica.ccet.ufrn.br/ On Tue, Dec 10, 2019 at 7:23 PM Nilson Guiotoku por (R-br) < r-br@listas.c3sl.ufpr.br> wrote:
Pessoal estou com uma dúvida quanto o pacote randomForest do R. Usei a função randomForest para modelar o meu conjunto de dados. Como irei aplicar o modelo já treinado para meu conjunto teste, salvei como .rda. Na próxima etapa iria subir o treino (.rda) para rodar o banco de dados independente. Porém, a forma como salvei está dando erro quando aplico a função predict. É como se o load ou a extensão .rda não conservasse o formato do banco de dados. E o erro é que o objeto "model" deveria ser um randomForest e ele fica como "character". Eu sei que eu poderia usar o que foi salvo na memoria do R, o modelCT, esse se usar no predict não daria erro. Mas para cada novo conjunto de dados independente, não gostaria de ficar treinando a todo o momento, gostaria de passar somente os parâmetros já treinados.
Como um código executável para exemplificar o problema usei o da Iris.
library(randomForest) modelCT <- randomForest::randomForest(Sepal.Length ~ ., data = iris, importance = TRUE) # modelagem com randomForest str(modelCT) save(modelCT, file = "model.rda") # salvei como rda model = load("model.rda") # Faço a chamada do arquivo treinado .rda str(model) predValid <- randomForest::predict(model, iris, type = "class") # o banco de dados deveria ser independente, mas aqui é somente para mostrar o erro do formato como está o model predValid <- predict(model, iris, type = "class") _______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.
participantes (2)
-
Marcus Nunes
-
Nilson Guiotoku