[R-br] Manter a estrutura do objeto da funcao randomForest

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

[R-br] Manter a estrutura do objeto da funcao randomForest

R-br mailing list
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
[hidden email]
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.
Reply | Threaded
Open this post in threaded view
|

Re: [R-br] Manter a estrutura do objeto da funcao randomForest

R-br mailing list
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


On Tue, Dec 10, 2019 at 7:23 PM Nilson Guiotoku por (R-br) <[hidden email]> 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
[hidden email]
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.

_______________________________________________
R-br mailing list
[hidden email]
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.