Tracciare i risultati dell'albero decisionale da tidymodels

Aug 22 2020

Sono riuscito a creare un modello di albero decisionale utilizzando il tidymodelspacchetto, ma non sono sicuro di come estrarre i risultati e tracciare l'albero. So di poter usare i pacchetti rparte rpart.plotper ottenere la stessa cosa, ma preferirei usarli tidymodelsperché è quello che sto imparando. Di seguito è riportato un esempio che utilizza i mtcarsdati.

library(tidymodels)
library(rpart)
library(rpart.plot)
library(dplyr) #contains mtcars

#data
df <- mtcars %>%
    mutate(gear = factor(gear))


#train/test
set.seed(1234)

df_split <- initial_split(df)
df_train <- training(df_split)
df_test <- testing(df_split)


df_recipe <- recipe(gear~ ., data = df) %>%
  step_normalize(all_numeric())


#building model
tree <- decision_tree() %>%
   set_engine("rpart") %>%
   set_mode("classification")

#workflow
 tree_wf <- workflow() %>%
   add_recipe(df_recipe) %>%
   add_model(tree) %>%
   fit(df_train) #results are found here 

rpart.plot(tree_wf$fit$fit) #error is here

L'errore che ricevo dice che ha senso ma non sono a conoscenza se manca un pacchetto o un passaggio per convertire i risultati in un formato che mi permetta di tracciare. Questo potrebbe non essere possibile, ma qualsiasi aiuto sarebbe molto apprezzato.Error in rpart.plot(tree_wf$fit$fit) : Not an rpart objectrpart.plot

Risposte

4 HanyNagaty Aug 22 2020 at 13:11

Puoi anche usare la workflows::pull_workflow_fit()funzione. Rende il codice un po 'più elegante.

tree_fit <- tree_wf %>% 
  pull_workflow_fit()
rpart.plot(tree_fit$fit)
3 StephenMilborrow Aug 22 2020 at 04:37

I seguenti lavori (notare l'extra $fit):

rpart.plot(tree_wf$fit$fit$fit)

Non è una soluzione molto elegante, ma traccia l'albero.

Testato con parsnip 0.1.3 e rpart.plot 3.0.8.